Mac 与 Windows:行尾和回车 return

Mac versus Windows: End of line and carriage return

这是一个关于如何让 Mac 和 Windows PC 相互配合的问题。

场景:我使用 Mac。我有一堆数据文件需要一些切片和切块才能与可视化工具包一起使用。可视化软件仅供 Windows 使用,这没问题,因为我有一个虚拟 Windows 机器。 awk 是我解决这个问题的首选工具,它生成的输入文件非常漂亮。不幸的是,当我为可视化工具生成输入文件并将它们发送到 PC 时,没有新行;即,在 Mac 我打开(比如)output001.txt:

header.info

# file automatically generated by awk

BEGIN File
...
<columns of data>
...
END File

看起来很棒,但后来我在 PC 上打开并拥有:

header.info# file automatically generated by awkBEGIN File...<columns of data>...END File

我了解 Windows 和 Mac OS 对行尾字符的处理方式不同。我读过 Mac 上的 \n 代表换行符和字符 return,而 Windows 将它们分开处理,因此需要 \n\r。但在这里,问题有些不同。我从未使用 \n 字符生成文本文件——awk 完成了所有换行。 是否有一个字符可以 awk 放在它所写的每一行的末尾,以便 Windows 可以理解换行符的位置?

当然,将 "Output Record Separator" 设为 Carriage ReturnLinefeed。所以而不是

seq 1 10 | awk '1' | cat -vet
1$
2$
3$
4$
5$
6$
7$
8$
9$
10$

使用

seq 1 10 | awk '1' ORS='\r\n' | cat -vet
1^M$
2^M$
3^M$
4^M$
5^M$
6^M$
7^M$
8^M$
9^M$
10^M$

备注:

seq 1 10 只生成从 1 到 10 的数字。

1 相当于 awk 中的 true 这意味着它应该只做它的默认事情 - 这意味着只打印当前行。

我只是用 cat -vet 来显示马车 Returns,即 ^M