我发现我的很多文件都有DOS行结尾。在VI中它们看起来像这样:“^ M”。 我不想修改没有这些DOS行结尾的文件。如何使用bash脚本执行此操作?谢谢!
EV
答案 0 :(得分:3)
在ubuntu上,您使用fromdos
实用程序
fromdos test.txt
上面的示例将采用MS-DOS或Microsoft Windows文件或具有不同行分隔符的其他文件,并使用新的行分隔符格式化该文件,以便在Linux和Unix中读取。
答案 1 :(得分:3)
使用GNU coreutils
的一种方式:
< file.txt tr -d '\r'
答案 2 :(得分:1)
有很多选项..你可以试试其中任何一个.. http://www.theunixschool.com/2011/03/different-ways-to-delete-m-character-in.html
答案 3 :(得分:0)
您可以使用命令:
dos2ux file.in>file.out or:
in perl:
perl -pi -e 's/\r//g' your_file
或者你可以这样做:
:%s/[ctrl-V][CTRL-M]//g
答案 4 :(得分:0)
如果您需要按文件结尾
进行过滤,请对Winning答案进行修改grep -URl ^M . | grep .php | xargs dos2unix
我使用的是dos2unix而不是fromdos,但效果应该相同。
答案 5 :(得分:0)
cat origin_file.txt | sed "s/^M//" > dest_file.txt
您必须执行上述相同的操作,ctl-V 然后 ctl-M 才能获得该字符。这对我来说更可取,因为它可以跨多个平台移植,并且在 bash 中保持简单。
在 ubuntu 上我也发现这有效:
cat origin_file.txt | sed "s/\r//" > dest_file.txt