Mac与PC:行尾和回车

时间:2015-11-11 16:18:18

标签: macos scripting newline carriage-return pc

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

SCENARIO:我使用的是Mac。我有一堆数据文件,需要一些切片和切块才能与可视化工具包一起使用。可视化软件仅适用于PC,因为我有一台虚拟Windows机器,所以没问题。 awk是我解决此问题的首选工具,它可以很好地生成输入文件。不幸的是,当我为可视化工具生成输入文件并将它们发送到PC时,没有新行;即在Mac上我打开(比如说)output001.txt

stk.v.10.1

# file automatically generated by awk

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

看起来不错,但随后我在电脑上打开并拥有:

stk.v.10.1# file automatically generated by awkBEGIN Ephemeris...<columns of data>...END Ephemeris

我知道PC和Mac会以不同的方式处理行尾字符。我已经读过Mac上的\n代表换行和字符返回,而PC则单独处理它们,需要\n\r。但在这里,问题有所不同。我从未使用生成文本文件的\n字符 - awk执行了所有换行符。 是否有一个字符可以awk放在它写入的每一行的末尾,以便PC能够理解换行的位置?

1 个答案:

答案 0 :(得分:2)

当然,将“输出记录分隔符”设为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相当于true中的awk,这意味着它应该只执行默认操作 - 这意味着只打印当前行。

我只是使用cat -vet来显示回车符,即^M