awk 匹配两个文件之间的值

awk 匹配两个文件之间的值

我想比较两个文件的第一列。如果匹配,则将第二个文件的对应值导出到第一个文件。

File 1
username, fields

File 2
username, other_fields

Output File
username, fields, other_field if there is a match else blank

我已经使用了这段代码,但输出文件是空白的

awk 'NR==FNR { a[$1]=$2; next} $1 in a {print $0, a[$1]}' File2 File1

答案1

使用join

join -t, -a1 <(sort -k1,1 -t, file1) <(sort -k1,1 -t, file2)

csvjoin来自csvkit:

csvjoin --left -H -c a file1 file2

答案2

使用awk

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

答案3

awk 'NR==FNR { a[$1]=$2; next} $1 in a {print $0, a[$1]}' file1 file2 > output.csv

相关内容