linux去掉windows下⽂件中的r
Unix体系⾥,每⾏结尾只有“<;换⾏>”,即“\n”;
Windows体系⾥⾯,每⾏结尾是“<;换⾏><;回 车>”,即“\n\r”。
⼀个直接结果是,Unix体系下的⽂件在Windows⾥打开的话,所有⽂字会变成⼀⾏;
⽽Windows⾥的⽂件在Unix下打开的话,在每⾏的结尾可能会多出⼀个^M符号。
好了,所以我的题⽬就出在被处理惩罚的⽂件的每⾏末尾都有^M符号,⽽这凡是是看不出来的。可以⽤”cat -A test.file”号令查看。是以当我想在⾏尾添加字符的时⾠,它⽼是添加在⾏⾸且会覆盖掉本来⾏⾸的字符。
使⽤vim⽅式处理
在vim命令模式下输⼊%s/^M$//g
回车即会⾃动删除该⽂件中的所有 ^M 字符。
那么,这句命令到底是什么意思呢?% 指匹配整个⽂件,s 是置换的意思,^M 注意要⽤ Ctrl + V Ctrl + M
来输⼊,M 后⾯的 $ 代表匹配⾏尾的内容,最后的 g 则表⽰每⾏中匹配到的内容都要置换。
理解了命令的含义,就好变通使⽤了,⽐如说,要将某个⽂件中的 Vim 全部替换成 VIM,则可以使⽤这样的命令::%s/Vim/VIM/g。
⽅法1:
在命令模式下:输⼊:%s/^M//g 然后,回车即可替换
注,其中”^M”的输⼊,分别是“Ctrl+v”、“Ctrl+M”键⽣成的
⽅法2:
使⽤vi打开⽂本⽂件
命令模式下输⼊
:set fileformat=unix
:w
⽅法3:
linux怎么读取windows文件使⽤sed ⼯具
sed ’s/^M//’ filename > tmp_filename
⽅法4:
既然window下的回车符多了‘\r’,那么当然通过删除‘\r’ ,也可以实现:
tr -d ‘\r’
⽅法5:(最常⽤的⽅法)
在终端下敲命令:
$ dos2unix filename
直接转换成unix格式,就OK了!~
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论