如何使用awk

时间:2017-03-30 20:17:51

标签: sorting awk

我尝试使用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

3 个答案:

答案 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。