首页 > 其他 > 详细

awk应用:文件合并

时间:2016-02-05 02:06:16      阅读:146      评论:0      收藏:0      [点我收藏+]

已知文件1.txt和2.txt

cat 1.txt

1 a
2 a
3 a
4 b
5 c
6 c
7 d

cat 2.txt

a 10
b 20
c 30
d 40

要求:通过awk将以上两个文件合并成如下效果

1 a 10
2 a 10
3 a 10
4 b 20
5 c 30
6 c 30
7 d 40

解答:

awk ‘NR==FNR{m[$1]=$2}NR>FNR{print $0,m[$2]}‘ 2.txt 1.txt

知识点:

NR为awk命令读取记录的数目

FNR为awk命令读取当前文件的记录的数目

在此例中,awk首先读取的是2.txt文件,然后读取的是1.txt文件,在awk命令读取完2.txt最后一条记录时,NR=FNR,都等于4,当awk命令开始读取1.txt的第一条记录时,NR=5,而FNR=1。这就是NR和FNR的区别。


解释:

m[$1]=$2是把第一个文件(2.txt)的第二列复制给以第一列为key的数组,当NR>FNR时,awk命令读到了第二个文件(1.txt),要取出数组m的值,就要找到相应的key值,key值对应第二个文件的第二列,就是m[$2]。

本文出自 “吾在庐山” 博客,请务必保留此出处http://147546.blog.51cto.com/137546/1741140

awk应用:文件合并

原文:http://147546.blog.51cto.com/137546/1741140

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!