输入文件:
abc
def^M
ghi
jkl
mno^M
pqr^M
期望的输出:
abc def
ghi jkl mno
pqr
我尝试了:
sed 's/^[\^M]$/ /g' file.txt > output.txt
例如,所有行都必须用空格隔开,直到^M [ctrl-m]字符出现。
^M
通常不是实际的字符^
和M
。 ^
表示特殊字符,M
表示它是第13个ASCII字符(M是第13个字母)。^M
表示回车符。查看ASCII表可以帮助您了解这些不可打印的ASCII字符被称为“控制字符”。
这通常意味着文件具有两个字符的Windows风格换行符,ASCII 13和ASCII 10。大多数语言将其表示为\r\n
。
要替换^M
,可以使用\r
或\015
(第15个ASCII字符在八进制中是13)。
使用 gnu-awk
,您可以执行以下操作:
awk -v RS='\r\n*' '{gsub(/\n/, " ")} 1' file
abc def
ghi jkl mno
pqr
cat -vte file
的结果吗? - anubhavaawk -v BINMODE=3 -v RS='\r\n*' '{gsub(/\n/, " ")} 1' file
。如果您关心的话,请参见http://www.gnu.org/software/gawk/manual/gawk.html#PC-Using获取详细信息。 - Ed Morton
tr
(它会在CR LF结束后向行添加前导空格)。 - Jonathan Leffler