【运维经】第21章——dos2unix,删掉^M这个鬼东西

运维经–目录


删掉^M这个鬼东西

^M这个鬼东西是怎么来的?通俗讲就是解决换行回车的问题。
dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是0A。DOS格式的文本文件在Linux底下,用较低版本的vi打开时行尾会显示^M,而且很多命令都无法很好的处理这种格式的文件,如果是个shell脚本,。而Unix格式的文本文件在Windows下用Notepad打开时会拼在一起显示。因此产生了两种格式文件相互转换的需求,对应的将UNIX格式文本文件转成成DOS格式的是unix2dos命令。

使用方法非常简单

(base) frank@deepin:~/project/go/tendermint/bin$ unix2dos a.txt 
unix2dos: 正在转换文件 a.txt 为DOS格式...
(base) frank@deepin:~/project/go/tendermint/bin$ vi a.txt 
(base) frank@deepin:~/project/go/tendermint/bin$ file a.txt 
a.txt: ASCII text, with CRLF line terminators
(base) frank@deepin:~/project/go/tendermint/bin$ dos2unix a.txt 
dos2unix: 正在转换文件 a.txt 为Unix格式...
(base) frank@deepin:~/project/go/tendermint/bin$ file a.txt 
a.txt: ASCII text

可以看到dos格式文件的属性会有with CRLF line terminators这样的一句,是什么意思呢?

CRLF(Carriage-Return Line-Feed),是回车换行,就是回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)。

dos2unix参数列表

用法:dos2unix [选项] [文件 ...] [-n 输入文件 输出文件 ...]
 -ascii                只转换换行符(默认)
 -iso                  在 DOS 和 ISO-8859-1 字符集之间转换
   -1252               使用Windows 1252 编码页(西欧)
   -437                使用DOS 437 编码页(US)(默认)
   -850                使用DOS 850 编码页(西欧)
   -860                使用DOS 860 编码页(葡萄牙)
   -863                使用DOS 863 编码页(加拿大法語)
   -865                使用DOS 865 编码页(北欧)
 -7                    转换8 位字符到7 位空间
 -b, --keep-bom         保留UTF-8 BOM头
 -c, --convmode        转换模式
   convmode            ascii、7bit、iso或mac,默认为ascii
 -f, --force           强制转换二进制文件
 -h, --help            显示本说明文字
 -i, --info[=FLAGS]    显示文件信息
   文件 ...            需要分析的文件
 -k, --keepdate        保留输出文件时间
 -L, --license         显示软件协议
 -l, --newline         加入额外的换行符
 -m, --add-bom         添加UTF-8 BOM头(默认为UTF-8)
 -n, --newfile         写入新文件
   infile              新文件模式中的原始文件
   outfile             新文件模式中的输出文件
 -o, --oldfile         写入原文件(默认)
   file ...            旧文件模式中要转换的文件
 -q, --quiet           安静模式,不显示所有警告
 -r, --remove-bom         移除UTF-8 BOM头(默认)
 -s, --safe            跳过二进制文件(默认)
 -u,  --keep-utf16     保留UTF-16编码
 -ul, --assume-utf16le 假定输入文件格式为UTF-16LE
 -ub, --assume-utf16be 假定输入文件格式为UTF-16BE
 -v,  --verbose        显示更多信息
 -F, --follow-symlink  根据符号链接转换其目标文件
 -R, --replace-symlink 取代符号链接为转换后的文件
                         (原链接目标文件保持不变)
 -S, --skip-symlink    保持符号链接及其目标不变(默认)
 -V, --version         显示版本号

PS:如果是单纯的去掉^M,用vim的:%s/ctrl-v,ctrl-m//g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏 克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值