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