【发布时间】:2019-03-08 05:12:58
【问题描述】:
在 Linux 上:
echo -n $'boo\r\nboo\r\n' | awk $'BEGIN { RS="\\n" } {gsub("boo","foo"); print}' | cat -v
返回预期的
foo^M
foo^M
但是,在 mingw64(Windows 的 git bash)上返回相同的命令:
foo
foo
没有回车。
我尝试显式设置记录分隔符,因为两个平台之间的默认值可能不同,但是 mingw64 上的 awk 仍在咀嚼回车。我怎样才能让 awk 在 mingw64 上的 Linux 上做同样的事情?请注意,awk 版本略有不同(Linux 上的 GNU Awk 4.0.2 和 mingw64 上的 GNU Awk 4.2.1),但除非存在某种错误,否则我不认为这很重要。
请注意,由于在 mingw64 上,awk 中特别发生了一些事情:
echo -n $'boo\r\nboo\r\n' | cat -v
返回预期:
boo^M
boo^M
【问题讨论】:
-
GNU awk 4.1.4来自cygwin,相同。感谢您提出这个问题。 -
想必它在读取输入数据时在 Windows 上转换 Windows 样式的行尾已经足够聪明了。
-
找到了解决方案,在下面查看我的答案。我建议你检查我链接到的问题和答案,并给他们投票:)