awk

1100阅读 0评论2013-06-03 owinux
分类:系统运维

学习文章:http://blog.chinaunix.net/uid-21374062-id-3189744.html

 cat a.txt
12 34 56
78 90 12
23 45 89

要求得到如下:

1       12      78 90 12
2       56      12 34 56
3       89      23 45 89 

# awk '{a[$NF]=$0}END{l=asorti(a,b);for (i=1;i<=l;i++) print i"\t"b[i]"\t"a[b[i]]}' a.txt 


如果a.txt中文件 有重复的

# cat a.txt 
12 34 56
78 90 12
90 78 12
23 45 89
使用 # awk '{a[$NF]=$0}END{l=asorti(a,b);for (i=1;i<=l;i++) print i"\t"b[i]"\t"a[b[i]]}' a.txt   得到的结果少了一行 。
如下:
awk '{a[$NF]=$0}END{l=asorti(a,b);for (i=1;i<=l;i++) print i"\t"b[i]"\t"a[b[i]]}' a.txt 
1       12      90 78 12
2       56      12 34 56
3       89      23 45 89


换个思路:
# sort -k 3 a.txt | awk '{print NR"\t"$NF"\t"$0}'





上一篇:awk 记录
下一篇:django settings app 相互调用