我有一个文件使用 unix 表示法作为行尾,另一个文件使用 Windows 表示法。
当我vi
查看 unix 文件时,我在行尾看不到任何东西。当我vi
看到^M
蓝色的 windows 文件时
问题是,从中间往下,线条中没有^M
蓝色 (??)。
我正在尝试将整个文件转换为^M
所有行。
我已经尝试了很多命令,但特别是这个
sed -e 's/$/^M/' < input.txt > output.txt
将“^M”添加为两个字符,而不是添加,Command-M
并且它也在已经具有正确^M
字符的行上这样做......
我也试过
sed -e 's/\r/^M/' < input.txt > output.txt
和
sed -e 's/\n/^M/' < input.txt > output.txt
没有成功...
发出一个cat -e input.txt
我在 ^M 正确的行上看到了这个:
1895;2;3;5;10;14;34^M$
1896;3;6;14;15;21;25^M$
1897;9;22;25;47;52;58^M$
1898;12;34;45;53;55;58^M$
这在不正确的
1899;20;23;35;36;44;48$
1900;8;11;27;28;43;46$
1901;11;12;26;30;37;53$
1902;02;07;09;18;21;25$
1903;09;10;15;28;43;45$
如何使用 command-m 获取所有行?
如果你有 Perl,使用它是避开不同版本
sed
等的最简单方法。或就地:
这将在所有行的末尾添加一个回车,除了已经有一个的行。(或者实际上,用一个 CR 替换零个或一个 CR:s。)
测试:
我想我在某处看到了 macOS 的提及。如果这就是您正在使用的,那么问题是
sed
它附带的不支持 GNU sed 支持的一半。我 Mac 上的那个似乎不支持\r
或\xHH
...但是您可以在命令行上粘贴文字回车:
^M
没有两个字符and^
,M
而是单个回车符,shell(我想你会有 Bash)显示为^M
. 您需要输入字符Ctrl-VCtrl-M或者,或者,让 shell
\r
为您解释:(
$'...'
几乎所有shell都支持该语法,即使它不是标准的(据我所知))在这种情况下, unix2dos应该适合您。但是,您似乎使用的是 macOS,它没有该程序的存储库,我建议您使用
sed -e 's/\n/\r\n/' < input.txt > output.txt
的只是不太方便。