我有 2 个 csv 文件。第一个文件很大(> 400 个字段和许多行> 1 mil),需要通过匹配的连接附加另一个字段。
我想加入一个领域 $170
我努力了
gawk 'BEGIN {OFS=FS=","} NR==FNR{b[$1]=$2; next}
$170 in b {print $0,b[$170]}
' b a
根据 Why is not this awk command doing a full outer join? (参见@cuonglm 的回答)
我没有对此进行测试,但想知道随着文件大小增加的“最佳”方法。
@cuonglm 建议使用join
,但这会重新排列列以将连接字段放在首位。
我不能join
使用参数轻松地为命令编写长输出格式,-o
因为这会很长:
join -1 170 -2 1 -o1.1 1.2 1.3 1.4......1.300.... file1 file2
有没有办法join
更容易做到这一点?
或者我应该坚持使用gawk
, 作为文件大小问题(例如,文件 a 和 b 中的最大行数为 5 百万行,都具有大约 500 列)?