如果我打开在Windows上创建的文件,所有行都以^M
结尾。
如何一次性删除这些字符?
如果我打开在Windows上创建的文件,所有行都以^M
结尾。
如何一次性删除这些字符?
dos2unix
可以直接修改文件内容。
您可以直接在文件上使用它,无需进行任何临时文件重定向。
dos2unix input.txt input.txt
-437
选项来使用英式键盘。dos2unix -437 input.txt input.txt
:e ++ff=dos Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:setlocal ff=unix This buffer will use LF-only line endings when written.[A 2]
:w Write buffer using Unix (LF-only) line endings.
参考资料:文件格式
我发现了一个非常简单的方法:用nano打开文件:nano file.txt
按下 Ctrl + O 保存,但在按下 Enter 键之前,按下:Alt+D 在 DOS 和 Unix/Linux 行尾符之间切换,或者按下:Alt+M 在 Mac 和 Unix/Linux 行尾符之间切换,然后按下 Enter 保存并按下 Ctrl + X 退出。
^M
。保存为 DOS 格式以保留,保存为 Linux 格式以删除。可以使用 cat -v
命令进行检查。 - HattrickNZ:%s/^M$//g
^M
出现,需要先按下CtrlV,再按下CtrlM。 CtrlV命令Vim将输入的下一个字符视为文字。关于如何让 ^M 出现的注释对我很有用。在我的 vi 中仅键入 "^M" 无效(没有找到)。但是使用 CTRL+V CTRL+M 序列完美地解决了这个问题。
我的替换命令如下:
:%s/Ctrl-V Ctrl-M/\r/g
在我的屏幕上看起来像这样:
:%s/^M/\r/g
:g/Ctrl-v Ctrl-m/s///
CtrlM 是字符 \r
,也就是回车符,在 DOS 换行符中会添加。 CtrlV 告诉 Vim 在命令行插入一个字面上的 CtrlM 字符。
总的来说,这个命令会将所有的 \r
替换为空,从而删除它们在行末的位置。
:%s/^V^M//g
hexdump -C badfile
并且看到了0x0d 0x0a
,也就是"\r\n"
,那就是你的问题所在。需要修复这个问题。 - Yzmir Ramirez^M
,如何去除它? - Henke