Unix输出命令到文本文件

时间:2014-07-22 09:14:58

标签: bash unix awk

我正在使用以下命令从名为IMSI.txt的文件中读取:

$awk 'NR>2' IMSI.txt | awk '{print $NF}'

我需要输出此命令才能转到名为NEW.txt的新文件

所以我这样做了:

$awk 'NR>2' IMSI.txt | awk '{print $NF}' > NEW.txt 

这很好用,但是当我打开文件时,命令的输出在同一行。 新线路被忽视了。

例如,如果我在控制台中获得输出

222
111
333

我打开文本文件,然后我

222111333

我该如何解决?

感谢您的帮助:)

PS:我在Windows上使用Cygwin

2 个答案:

答案 0 :(得分:2)

我猜你的(Windows-y)编辑器希望在行的末尾看到Carriage Returns,而不是Linefeeds(这是awk输出的内容)。将您的print更改为此

print $NF "\r"

所以它看起来完全是这样的:

awk 'NR>2 {print $NF "\r"}' IMSI.txt

答案 1 :(得分:2)

只需将ORS设置为"\r\n"即可让Awk为每个输出生成DOS行结尾。我相信这是最自然的解决方案:

awk -v ORS="\r\n" '{print $NF}' > NEW.txt 

使用Cygwin在虚拟XP系统上测试。

来自Awk的手册:

  

ORS 输出记录分隔符,默认为换行符。