linux/mac批量替换文件中的^M换行符

在Linux/mac下使用vi来查看一些在Windows下创建的文本文件,有时会发现在行尾有一些“^M”。有几种方法可以处理。

一,mac下可以用perl:$perl -pi -e 's/\r\n?//g' part-00000 #将\r替换为\n
perl - pretty obvious, runs the Perl interpreter

-p - says to perl, 'for every line in the file, do this...'
-i - says to perl 'send output back to the same file you read from'

-e - says 'run the next bit as if it's a script'

s/\r/\n/g : This is the bit that does the work

s// - the substitute command, The '/' are just separators
\r - a 'return'
\n - a 'newline
g - means 'global', ie for every ocurrance.

批量处理
#!/bin/sh
for filename in filefolder/*
do
         echo $filename
         #perl -pi -e 's/rn?/n/g' "$filename"
         perl -pi -e 's/rn?//g' "$filename" #将^M换成空字符串
done


二, linux/mac

1.使用dos2unix命令。
$ dos2unix myfile.txt 亲测不好使 (dos2unix install: http://macappstore.org/dos2unix/

上面的命令会去掉行尾的^M。

2.使用vi的替换功能。启动vi,进入命令模式,输入以下命令:
:%s/^M$//g # 去掉行尾的^M。

:%s/^M//g # 去掉所有的^M。

:%s/^M/[ctrl-v]+[enter]/g # 将^M替换成回车。

:%s/^M/\r/g # 将^M替换成回车。

3.使用sed命令。和vi的用法相似:
$ sed -e ‘s/^M/\n/g’ myfile.txt  # 将^M替换成回车。

sed -e ‘s/^M//g’ myfile.txt #去掉^M

注意:这里的“^M”要使用“CTRL-V CTRL-M”生成,而不是直接键入“^M”。


以上方法亲测可用。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值