Bash Unix将命令输出到文本文件

Bash Unix将命令输出到文本文件,bash,unix,awk,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 我打开文本文件,得到 22211133

我正在使用以下命令读取名为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,我猜您的(windows-y)编辑器希望看到换行符出现在行尾,而不是换行符(这就是
awk
输出的内容)。将您的
打印更改为此

print $NF "\r"
所以看起来是这样的:

awk 'NR>2 {print $NF "\r"}' IMSI.txt
我猜您的(Windows-y)编辑器希望在行尾看到回车,而不是换行符(这就是
awk
输出的内容)。将您的
打印更改为此

print $NF "\r"
所以看起来是这样的:

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

只需将ORS设置为
“\r\n”
,这允许Awk为每个输出生成DOS行结束符。我相信这是最自然的解决方案:

awk -v ORS="\r\n" '{print $NF}' > NEW.txt 
使用Cygwin在虚拟XP系统上进行测试

来自Awk的手册:

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


只需将ORS设置为
“\r\n”
,这允许Awk为每个输出生成DOS行结束符。我相信这是最自然的解决方案:

awk -v ORS="\r\n" '{print $NF}' > NEW.txt 
使用Cygwin在虚拟XP系统上进行测试

来自Awk的手册:

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


你能发布
IMSI.txt
吗?你能发布
IMSI.txt
吗?事实上,我相信
Wordpad
可以处理Unix-y换行,而
Notepad
不能。然而,我并不是说两者都是一个好的编辑:-)太棒了!很高兴为您服务。请注意,如果您的
awk
程序更复杂,并且包含多个
print
语句,@konsolebox的方法更合适。事实上,我相信
Wordpad
可以处理Unix-y换行,而
Notepad
不能。然而,我并不是说两者都是一个好的编辑:-)太棒了!很高兴为您服务。请注意,如果您的
awk
程序更复杂,并且包含多个
print
语句,@konsolebox的方法更合适。