![Vim:通过替换 ^M 连接行](https://linux22.com/image/41684/Vim%EF%BC%9A%E9%80%9A%E8%BF%87%E6%9B%BF%E6%8D%A2%20%5EM%20%E8%BF%9E%E6%8E%A5%E8%A1%8C.png)
我有一个包含嵌入字符的文件^M
。我想加入角色的台词^M
。
即:改变这个:
^M
être, ^M
étant, ^M
été,Indicatif,Présent,suis,es,est,sommes,êtes,sont
^M
être, ^M
étant, ^M
été,Indicatif,Imparfait,étais,étais,était,étions,étiez,étaient
对此:
être,étant,été,Indicatif,Présent,suis,es,est,sommes,êtes,sont
être,étant,été,Indicatif,Imparfait,étais,étais,était,étions,étiez,étaient
此命令删除^M
但行未连接:
%s/\r//g
答案1
^M
是 Windows 特定的 EOL(行尾),它由两个字符组成:回车符\r
和换行符\n
。所以你必须包括\n在你的替换命令中:
%s/\r\n//g
如果您想坚持使用原来的替换命令,那么您必须首先将文件的 EOL 格式从 Windows 格式转换为 Unix 格式。您可以使用DOS2UNIX执行此操作的工具:
$ dos2unix fileToConvert
答案2
awk '/\r$/ {sub(/\r$/, ""); printf "%s", $0; next} {print}' file