在Ubuntu上查找并删除DOS行结尾

exv*_*nce 11 unix bash awk grep sed

我发现我的很多文件都有DOS行结尾.在VI中它们看起来像这样:"^ M".我不想修改没有这些DOS行结尾的文件.如何使用bash脚本执行此操作?谢谢!

EV

nul*_*ion 18

grep -URl ^M . | xargs fromdos
Run Code Online (Sandbox Code Playgroud)

grep为您提供当前目录下具有DOS行结尾的所有文件的列表.

-U 使grep考虑行结尾而不是默认剥离它们

-R 使它递归

-l 使其仅列出文件名而不是匹配的行

然后你将该列表输入转换器命令(fromdos在ubuntu上,dos2unix我来自哪里).

注意:实际上不要输入^M.相反,你需要按下<Ctrl-V>然后<Ctrl-M>插入^M角色并让grep了解你的目标.或者,你可以输入$'\r'代替^M(但我认为这可能仅适用于bash ...).

  • 用于安装的Ubuntu软件包称为"tofrodos". (5认同)

Ste*_*eve 5

一种使用方式GNU coreutils

< file.txt tr -d '\r'
Run Code Online (Sandbox Code Playgroud)