我尝试使用awk '{print $0|"sort -t',' -nk1 "}'
对文件进行排序,但我只想打印排序文件的第三列。输入文件:
1 4 7 9
9 7 4 1
4 6 8 9
1 2 3 4
5 4 5 2
预期产量:
3
7
8
5
4
答案 0 :(得分:1)
试试这个 -
sort file|awk '{print $3}'
3
7
8
5
4
答案 1 :(得分:0)
两种简单的方法“仅打印已排序文件的第三列”:
使用tr
+ cut
命令:
sort -n file | tr -s ' ' | cut -d' ' -f3
awk
:
sort -n file | awk '{print $3}'
答案 2 :(得分:0)
好吧,因为我已经开始使用Gnu awk的asorti
:
$ awk '
{ a[$1 "," $3]=$3 } # get the data to a hash (*)
END { n=asorti(a) # sort a by the index
for(i=1;i<=n;i++) { # for each ordered index
split(a[i],b,",") # split and
print b[2] # print the latter part
}
}' file
3
7
8
5
4
(*)
如果仅使用$1
作为密钥,则在$1=1
时会发生冲突。对于使用$1 "," $3
的数据,不会产生冲突,也会对$3
进行排序。但是,可能会发生碰撞。正确的方法是保持密钥的计数,并有一个子for
循环来打印出来(或者用NR
索引的不同数组中的键和值)。这将留下一个exersize。