使用awk在unix中的文件上进行左外部联接有点sql

时间:2018-08-20 19:34:50

标签: unix join awk

我正在尝试根据两个文件中的第一列进行联接。

到目前为止,我尝试使用的是以下代码

awk  '{if (NR==FNR) {a[$1]=$2; next} if ($1 in a) {print $2"|"$3"|""Found"}      if(!($1 in a)) {print $2"|"$3"|""Not Found"}}' file1.txt file2.txt > TARGET.txt

file1 file contents
1as.pdf
2as.pdf
3as.pdf
45.pdf
as.pdf

file2 file contents
3ss.pdf 1_2_3_45.csv    4
3s.pdf  1_2_3_45.csv    4
2as.pdf 1_2_3_45.csv    4
1as.pdf 1_2_3_45.csv    4
45.pdf  1_2_3_45_5.csv  1
3.pdf   1_2_3_5.csv 1

1 个答案:

答案 0 :(得分:1)

$ awk -v OFS='|' 'NR==FNR{a[$1];next} 
                         {print $2,$3,(($1 in a)?"Found":"Not Found")}' file1 file2 

1_2_3_45.csv|4|Not Found
1_2_3_45.csv|4|Not Found
1_2_3_45.csv|4|Found
1_2_3_45.csv|4|Found
1_2_3_45_5.csv|1|Found
1_2_3_5.csv|1|Not Found

但是,由于您没有打印密钥,因此找到的内容并不十分清楚。也许也将第一个字段保留在输出中...