在 Windows 行结束时,您想删除 ^M(或 \r 或回车),但您似乎想用换行符替换 ^K。
我使用的命令是tr,两次。
tr -d '\r' < article_filemakerExport.xml | tr '\13' '\12' > tmp.$$ &&
mv tmp.$$ article_filemakerExport.xml || rm -f tmp.$$
鉴于一个操作是删除,另一个是替代操作,我认为您不能将它们组合成一个 tr 调用。如果您担心链接等问题,可以使用cp tmp.$$ article_filemakerExport.xml; rm -f tmp.$$。
您还可以使用 dos2unix 将 CRLF 转换为 NL 行尾而不是 tr。
注意tr是一个纯过滤器;它只读取标准输入,只写入标准输出。它不直接读取或写入文件。
实际上,我需要用换行符替换这两个。
这更容易:一次调用 tr 就可以完成这项工作:
tr '\13\15' '\12\12' < article_filemakerExport.xml > tmp.$$ &&
mv tmp.$$ article_filemakerExport.xml || rm -f tmp.$$
或者,如果您愿意:
tr '\13\r' '\n\n' < article_filemakerExport.xml > tmp.$$ &&
mv tmp.$$ article_filemakerExport.xml || rm -f tmp.$$
我认为 control-K 没有 \z 样式的表示法,但我愿意学习其他方式(可能是垂直制表符,\v)。
(在Ed Morton的提示处添加了&&和|| rm -f tmp.$$命令。)
控制字符的部分列表
C Oct Dec Hex Unicode Name
\a 07 7 07 U+0007 BELL
\b 10 8 08 U+0008 BACKSPACE
\t 11 9 09 U+0009 HORIZONTAL TABULATION
\n 12 10 0A U+000A LINE FEED
\v 13 11 0B U+000B VERTICAL TABULATION
\f 14 12 0C U+000C FORM FEED
\r 15 13 0D U+000D CARRIAGE RETURN
您可以在 Unicode 站点 (http://www.unicode.org/charts/PDF/U0000.pdf) 上找到这些控制字符的完整集。毫无疑问,还有许多其他可能的地方值得一看。