如果每个文件中的不同列匹配并且两个文件都是 csv/双引号分隔格式,如何合并 2 个文件



我有 2 个 csv/双引号分隔的文件。文件 26 中的第 1 列和文件 2 中的第 2 列都包含域,如果我运行以下内容

awk -F'"' '{print $26}' file1.csv
awk -F'"' '{print $2}' file2.txt

然后我可以看到文件 1 有 6 个域,文件 2 有 3 个域。

文件

2 中的所有域也在文件 1 中。

如果文件 2 中的第 2 列

与文件 2 中的第 1 列匹配,我想生成一个新文件,其中包含文件 1 中的所有列以及文件 2 中的所有列。

另外,我很确定第 26 列始终是文件 1 中的最后一列,但文件 2 可以有任意数量的列。

有谁知道我如何在 bash、awk、sed 或类似情况下做到这一点?

@Bruce:

尝试:

awk -F'"' 'FNR==NR{A[$26]=$0;next} ($2 in A){print A[$2] FS $0}' file1  file2

所以在这里我检查 FNR==NR 条件,该条件仅在读取第一个文件 file1 时才为 TRUE,然后创建一个名为 A 的数组,其索引为 $26 字段并将其值设置为当前行并放置 next 将跳过所有进一步的语句。然后检查 file2 的 $2 是否存在于文件1的数组A中,然后用当前行的值打印数组A的值。

请提供样品Input_file和预期输出,以防上述情况不符合您的要求。