【发布时间】:2020-11-10 00:20:26
【问题描述】:
我有一个 bash 命令$ awk 'NR==FNR {a[$1]=$0;}; $1 in a {print a[$1]}' file1 file2 > outputfile。
file1 的结构如下:
'resource/Autism' 'type' 'owl#Thing' .
'resource/Alabama' 'type' 'AdministrativeArea' .
'resource/Alabama' 'type' 'Region' .
file2 的结构如下:
'resource/Alabama'
'resource/Abert_Einstein'
'resource/Autism'
我现在希望我的命令将“file2”中的条目与“file1”第一列的条目进行比较,如果匹配,则在“outputfile”中打印“file1”的整行。 例如,如果我在“file2”中有“resource/Alabama”行,它应该打印“file1”的每一行,其中第一列等于“resource/Alabama”。 但是,我的命令只打印找到“resource/Alabama”的最后一行。
谁能解释一下我做错了什么?
非常感谢! 问候,斯文
【问题讨论】:
-
交换输入文件的顺序-
awk '...' file2 file。想想吧。 -
...如果您不知道为什么这是解决方案,请随时在这里提问。
-
别忘了告诉我们你的尝试,我觉得这样更好。
-
@edMorton 成功了!我以为我之前尝试过更改输入文件的顺序,但显然我没有。我还必须将
{print a[$1]}更改为{print $0},是的@thanasip 很抱歉我忘记了next语句,但我的原始命令包含它。