我有两个文件:
第一个文件:
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