如何使用awk shell脚本来比较和匹配两个文件

时间:2013-05-29 10:00:19

标签: shell awk

基本上,我有两个文件

dupestest.txt

152,153
192,193
215,216
290,291
2279,2280
2282,2283

haftest.txt

152,ABBOTS ROAD
153,ABBOTS ROAD
154,ABBOTS ROAD
155,ABBOTS ROAD
156,ABBOTS ROAD
157,ABBOTS ROAD

我想在haftest.txt中找到dupestest.txt中的数字并生成此结果:results.txt

152,ABBOTS ROAD,153 ABBOTS ROAD 
192,ABBOTS ROAD,193,ABBOTS ROAD

有人可以给我任何建议吗?

必须是awk。

2 个答案:

答案 0 :(得分:3)

试试这个:

awk -F, 'BEGIN{OFS=","} FNR==NR{a[$1]=$2; next} $1 in a || $2 in a{print $1, a[$1], $2, a[$2]}' haftest.txt dupestest.txt

这行脚本测试dupestest.txt中是否存在haftest.txt中的第一个或第二个键,如果其中一个键存在,则在dupestest.txt中打印其关联值,您可以如果haftest.txt中只有两个键中的一个存在以获得所需的输出,那么必须稍微调整一下脚本,这样就可以作为练习了。

答案 1 :(得分:0)

试试这个

awk -F, 'NR==FNR{a[$1]=$0;next}$1 in a&&$2 in a{print a[$1]","a[$2]}' haft.txt dup.txt