我想比较两个(制表符分隔)文件的第一列。如果匹配,请打印文件1中的所有内容。例如:
档案1
MOS A 141282 141938
LEE A 11121 14597
TOD B 19237 20373
LEA,DOT A 1 1000
MAS,ALE C 24597 24599
文件2
LEE
LEA
ALE
EEL
期望的输出:
LEE A 11121 14597
LEA,DOT A 1 1000
MAS,ALE C 24597 24599
现在,我可以使用以下内容在第1列中找到完全匹配:
awk 'NR==FNR { a[$1] =$1; next} $1 in a {print $0}' file2 file1
给出:
LEE A 11121 14597
然而,我有点难过如何让它在第1列中选择列出多个单词的条目。我想打印每一行都有我正在寻找的单词,无论他们是否还有其他(不重要的)单词。那么如何让它识别
LEA,DOT A 1 1000
MAS,ALE C 24597 24599
还有我正在寻找的单词,并将它们打印在输出文件中? 非常感谢!
答案 0 :(得分:1)
我认为你需要在循环中进行正则表达式匹配:
awk 'NR==FNR { a[$1] = $1; next}
{ for (k in a) if ($1 ~ a[k]) { print $0; break } }' file2 file1
示例输出:
LEE A 11121 14597
LEA,DOT A 1 1000
MAS,ALE C 24597 24599