Chinaunix首页 | 论坛 | 博客
  • 博客访问: 56763
  • 博文数量: 28
  • 博客积分: 84
  • 博客等级: 民兵
  • 技术积分: 162
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-09 17:47
个人简介

try vuuv.github.io or somewhere else.

文章分类

全部博文(28)

文章存档

2013年(1)

2012年(5)

2011年(22)

我的朋友

分类:

2011-10-07 14:58:39

文件a:
2 3 5
3 4 8

文件b:
2 2 2 2
3 3 3 3
4 4 4 5
6 6 7 8
9 9 8 6
3 4 3 4
9 9 8 6
3 4 3 4
 
从文件a中读出对应的行号,然后打印出文件b中的内容,得到的结果如下:
3 3 3 3 4 4 4 5 9 9 8 6
4 4 4 5 6 6 7 8 3 4 3 4
 
  1. gawk '{a[NR]=$0}NR>FNR{for(i=1;i<NF;i++)printf a[$i] FS;print a[$NF]}' b a
  2. 3 3 3 3 4 4 4 5 9 9 8 6
  3. 4 4 4 5 6 6 7 8 3 4 3 4

[解析]

  这是yinyuemi大师的命令,非常巧妙,不光是思路上,而且达到短小精炼的目的。先把文件b按照NR递增作为下标读进数组a中,然后再第2部分再设置pattern条件目的是省略那个next,真是动了心思啊,而且在for表达式中,并非是常规写的 i<=NF ,而是 i

  1. awk '{a[NR]=$0}NR>FNR{for(i=1;i<=NF;i++)printf a[$i] FS;printf RS}' b a
阅读(760) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~