DOS、Mac 和 Unix 文件格式[转]
DOS、Mac 和 Unix 文件格式
相信很多朋友都碰到过这三种文件格式的互换问题,今日又碰到这个问题,忽然想
寻根问底,于是整理了本文档。
文件格式区别
我们先看看这三个家伙有啥区别。很久以前,人们用老式的电传打字机作为输入设备,它使用
两个字符来另起新行。一个字符把滑动架移回首位 (称为回车,),另一个字符把纸上移一行
(称为换行,)。
当计算机问世后,由于存储器曾经非常昂贵。有些人就认定没必要用两个字符来表示行尾。于是
UNIX 开发者决定他们可以用 一个字符来表示行尾。Apple 开发者规定了用 。
开发 MS-DOS (以及微软视窗) 的那些家伙则决定沿用老式的 。三种行尾格式如下:
unix
dos
mac
这意味着,如果你试图把一个文件从一种系统移到另一种系统,那么你就有换行符方面的麻烦。
转换
有需求就会有动力。在Windows平台,有强大的UltraEdit,它支持DOS、Mac 和 Unix 三种文
件格式的任意互换。在【文件】->【转换】选项卡下有相应的对应选项,很傻很强大。下面我们看看在Unix/Linux平台该如何做呢?
方法一:强大的dos2unix
dos2unix filename
方法二:强大的脚本
sed 's/^M//' filename > tmp_filename
其中^M是同时Ctrl+V+M按出来的,表示回车。
或
tr -d "\r" filename
或
cat filename | perl -pe '~s/\r//g' > tmp_filename
方法三:强大的vim
vim filename
:set fileformat=unix
:w
或
vim filename
:%s/^M//g
:w
与vi不同,vim具有自动识别功能,只需如下设置就可以自动进行转换。不过由于Mac格式比较特殊,vim对mac格式的自动探测可能会出错。请参考:
http://vimcdoc.sourceforge.net/doc/usr_23.html
vim filename
:set fileformats=unix,dos,mac
批量转换
有时候我们可能希望对这种转换进行批量处理。在Windows下有强大的UltraEdit,用全局replace的方法或者建立工程的方法可以批量转换,请参考
http://tech.ddvip.com/2007-10/119380983936863.html
。Windows平台下还有很多相关的小工具,如MultiU2D等,google一下吧。
在Unix/Linux平台下我们就要借助脚本文件或者通道了,实质上是上述几种方法的自动化。下面举几个简单例子,来源自
http://bbs.chinaunix.net/viewthread.php?tid=412957&extra=&page=1
:
脚本1:
ls -l | awk '{print $8}' > filename.txt
N=1
NN=`wc -l filename.txt | awk '{print $1}'`
while [ "$N" -le "$NN" ]; do
TempLine=`sed -n "$N"p "filename.txt"`
if [ -n "$TempLine" ]; then
tmpfilename=$TempLine
dos2ux $tmpfilename > file
mv file $tmpfilename
fi
N=$(($N + 1))
done
脚本2:
for XFILE in $(egrep -l ^M `find . -name "*.txt";find . -name "*.sql"`)
do
echo "开始处理文件"$XFILE
if [ -s $XFILE ]
then
TMPFILE=$XFILE.tmp
mv $XFILE $TMPFILE
tr -d "\r" $XFILE
rm $TMPFILE
else
continue
fi
done
通道法:
find . -type f |xargs -i dos2unix {}
后记
对于Mac格式转换到其他两种格式的方法类似,在类Unix环境下有dos2unix/mac2unix工具。
在计算机世界,格式转换无处不在,如字符格式、压缩格式、网络协议格式、音视频格式等等。所以进行相关工作时,应该多多留意。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/97596/showart_1999657.html
DOS、Mac 和 Unix 文件格式[转]的更多相关文章
- DOS、Mac 和 Unix 文件格式+ UltraEdit使用
文件格式 区分DOS.Mac 和 Unix分别对应三种系统 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种 文件模式 区分ASCII模式和Binary模式 通常由系统决定,大多数 ...
- dos文件格式转换为Unix文件格式
做linux开发的,一般还是在windows上装个虚拟机,在windows上开发, 所以就会出现dos文件与unix文件格式不一致,当windows上的文件在linux上用的时候,经常在每行的末尾会出 ...
- DOS文件转换成UNIX文件格式详解
转:DOS文件转换成UNIX文件格式详解 由windows平台迁移到unix系统下容易引发的问题:Linux执行脚本却提示No such file or directory dos格式文件传输到uni ...
- dos与unix文件格式之间的转换
1. VI编辑器中转换 在VI中使用命令 set ff?(fileformat)可以查看文件的格式,使用set ff=dos(unix)可以设置文件的格式 2.使用sed处理(来至http://www ...
- DOS & UNIX文件格式转换
1.使用vi编辑器 vi xxxx :set fileformat=unix(or dos) :wq 2.使用 dos2unix 这个只能把DOS转换成UNIX文件 . sudo apt-get in ...
- 【转】Linux下的文本dos格式转Unix格式,去除^M符号
原文网址:http://blog.csdn.net/kobejayandy/article/details/13291525 问:我在Windows中通过FTP传一个文本文件到Linux中,但是打开文 ...
- 检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式
非常简单可以解决: 方法一,用editplus打开,再复制回VS 方法二:在VS中,点文件->高级保存选项,然后在行尾选项中选择windows(CR LF),重新编译,ok
- 【改】DOS文件格式转UNIX文件格式
windows中的文本文件的换行符是"\r\n",而linux中是"\n",dos格式文件传输到unix系统时,会在每行的结尾多一个^M,当然也有可能看不到,但 ...
- windows下上传shell脚本不能运行—将dos模式修改为unix 文件格式
windows下上传shell脚本至linux,其格式将为dos.dos模式的shell脚本将不能再linux下正确运行,需要修改文件模式为unix. 1 查看文件模式方法 linux服务器上,用vi ...
随机推荐
- 设计模式学习(三): 装饰者模式 (附C#实现)
需求 做一个咖啡店的订单系统. 买咖啡时,可以要求加入各种调料,如奶,豆浆,摩卡等.咖啡店会根据调料的不同收取不同的费用.订单系统要考虑这些. 初版设计 然后下面就是所有的咖啡....: cost方法 ...
- 安卓电量优化之JobScheduler使用介绍
版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.JobScheduler概述 JobScheduler是安卓5.0版本推出的API,允许开发者在符合某些条件时创建执行在后台的任务.在Andro ...
- Linux 常见命令示例【一】
查看端口占用 [查看目前系统上已在监听的网络联机及其pid netstat –tlnp] 文件挂载 Linux与windows文件传输(三方软件:secureCRT, WINscp) 1)sftp S ...
- 【Splay】bzoj1500(听说此题多码上几遍就能不惧任何平衡树题)
1500: [NOI2005]维修数列 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 15112 Solved: 4996[Submit][Statu ...
- [转载自阿里丁奇]各版本MySQL并行复制的实现及优缺点
MySQL并行复制已经是老生常谈,笔者从2010年开始就着手处理线上这个问题,刚开始两三年也乐此不疲分享,现在再提这个话题本来是难免"炒冷饭"嫌疑. 最近触发再谈这个话题,是 ...
- mysql数据库快速入门(1)
1.数据库操作 1.1.连接mysql服务器 mysql -u root( 用户名 ) -p 1.2.退出mysql命令提示窗 exit 1.3.查看版本 SELECT VERSION(); 1.4. ...
- MySQL优化 - 索引优化
索引(在MySQL中也叫做"键(key)")是存储引擎用于快速找到记录的一种数据结构. 索引对于良好的性能非常关键,尤其是当表的数据量越来越大时,索引对性能(查询)的影响愈发重要. ...
- MySQL常用查询语句汇总(不定时更新)
在这篇文章中我会通过一些例子来介绍日常编程中常用的SQL语句 目录: ## 1.数据库的建立 ## 1.数据库的建立 实例将ER图的形式给出: 由此转换的4个关系模式: ...
- bzoj:2423: [HAOI2010]最长公共子序列
Description 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0, ...
- MySQL的ibdata1文件占用过大
处理MySQL的ibdata1文件过大问题 本人遇到一次在安装zabbix监控的时候,yum安装的MySQL数据库,后面用了一段时间发现data目录下的ibdata1的空间特别大,反而我的zabbix ...