【发布时间】:2020-06-12 20:56:11
【问题描述】:
我正在尝试使用 awk 合并在单个列上过滤的两个文件。然后我想做的是将文件 2 中的相关列附加到文件 1 中。
用虚拟例子更容易解释。
文件1
name fruit animal
bob apple dog
jim orange cat
gary mango snake
daisy peach mouse
文件 2:
animal number shape
cat eight square
dog nine circle
mouse eleven sphere
期望的输出:
name fruit animal shape
bob apple dog circle
jim orange cat square
gary mango snake NA
daisy peach mouse sphere
第1步:需要过滤file1中的第3列和file2中的第1列
awk -F'\t' 'NR==FNR{c[$3]++;next};c[$1] > 0' file1 file2
这给了我输出:
cat eight square
dog nine circle
mouse eleven sphere
这对我有所帮助,但是我不能简单地从上面的输出中剪切第三列(形状)并将其附加到 file1,因为在 file2 中没有“snake”条目。我需要能够将输出的第 3 列附加到匹配成功的文件 1 中,并且不放置“NA”。必须保留 file1 中的所有行,所以我不能忽略它们。这就是我卡住的地方!
如果有任何帮助,我将不胜感激...... E
【问题讨论】:
标签: awk