我试图从文件中检索匹配行,但是具有“索引”或要检索的匹配列表的文件也有重复的条目,我也想打印出重复项。
例子:
文件 1(索引文件或要匹配的字符串列表)
abc
tgf
abc
ggg
aaa
fff
文件 2(我想要检索文件 1 中每个匹配项的内容)
Fred 1 3 abc
Amy 2 4 ggg
Dan 5 6 tgf
Mike 9 1 fff
Steve 2 1 aaa
我想要的结果是(顺序并不重要,只是我匹配每一行):
Fred 1 3 abc
Dan 5 6 tgf
Fred 1 3 abc
Amy 2 4 ggg
Steve 2 1 aaa
Mike 9 1 fff
我很熟悉并尝试过 grep 如下,但它不会打印重复的条目。
grep -Fwf file1.txt file2.txt
Fred 1 3 abc
Amy 2 4 ggg
Dan 5 6 tgf
Mike 9 1 fff
Steve 2 1 aaa
答案1
通过awk
awk 'NR==FNR{A[$4]=$0;next}{print A[$1]}' file2.txt file1.txt
或sort
通过以下方式编辑输出join
:
join -o 2.1 2.2 2.3 2.4 -2 4 <(sort file1.txt) <(sort -k4 file2.txt)