linux去掉windows下文件换行符中的\r

转载https://blog.csdn.net/lovelovelovelovelo/article/details/79239068?utm_source=blogxgwz9

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打开文本文件
vi dos.txt
命令模式下输入
:set fileformat=unix
:w

方法3:
使用sed 工具
sed ’s/^M//’ filename > tmp_filename

方法4:
既然window下的回车符多了‘\r’,那么当然通过删除‘\r’ ,也可以实现:
tr -d ‘\r’

方法5:(最常用的方法)
在终端下敲命令将文件转换成unix格式:

$ dos2unix filename
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值