我想比较两个文件的第一列。如果匹配,则将第二个文件的对应值导出到第一个文件。
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