文件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
- gawk '{a[NR]=$0}NR>FNR{for(i=1;i<NF;i++)printf a[$i] FS;print a[$NF]}' b a
- 3 3 3 3 4 4 4 5 9 9 8 6
- 4 4 4 5 6 6 7 8 3 4 3 4
[解析]
这是yinyuemi大师的命令,非常巧妙,不光是思路上,而且达到短小精炼的目的。先把文件b按照NR递增作为下标读进数组a中,然后再第2部分再设置pattern条件目的是省略那个next,真是动了心思啊,而且在for表达式中,并非是常规写的 i<=NF ,而是 i
- awk '{a[NR]=$0}NR>FNR{for(i=1;i<=NF;i++)printf a[$i] FS;printf RS}' b a
阅读(760) | 评论(0) | 转发(0) |