获取第二个文件中与第一个文件中特定列的值匹配的所有行

获取第二个文件中与第一个文件中特定列的值匹配的所有行

我有两个文件:

第一个文件:

ab34,ax,55,gt
ab46,56,thy,ix
ab34,tg,47,xy
at87,kl,89,th
ab46,ut,87,er

第二个文件:

x1,ab34,78,got
wq,at87,100,op
90,ab46,la,gf

预期结果:

ab34,ax,55,gt,x1,ab34,78,got
ab46,56,thy,ix,90,ab46,la,gf
ab34,tg,47,xy,x1,ab34,78,got
at87,kl,89,th,wq,at87,100,op
ab46,ut,87,er,90,ab46,la,gf

我想根据第一个文件第一列中的值来 grep 第二个文件中的行。理想的输出是打印第一个文件,其中包含与第二个文件匹配的行。我编写了简单的 unix 命令,但这对我来说有点棘手,显然需要一个循环函数。

答案1

看起来像 UNIX 命令的想法,你需要先排序:

cat 1|sort > 1.sort
cat 2|sort -t, -k2  > 2.sort
join -t, -2 2 1.sort 2.sort

我刚刚给你做作业吗?

答案2

我对您实际想要的内容做了很多假设,但这会产生您想要的示例输出。所以也许我对这个问题的解释是正确的:

awk 'NR==FNR{a[$2]=$0; next} {print $0,a[$1]}' FS=, OFS=, file2 file1

相关内容