Bash Unix将命令输出到文本文件
我正在使用以下命令读取名为IMSI.txt的文件: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
$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的方法更合适。