Chinaunix首页 | 论坛 | 博客
  • 博客访问: 491295
  • 博文数量: 71
  • 博客积分: 1332
  • 博客等级: 少尉
  • 技术积分: 772
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-10 16:25
个人简介

文章分类

全部博文(71)

文章存档

2013年(19)

2012年(9)

2011年(43)

分类: 系统运维

2013-06-03 23:53:49

学习文章: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}'





阅读(1063) | 评论(0) | 转发(0) |
0

上一篇:awk 记录

下一篇:django settings app 相互调用

给主人留下些什么吧!~~