ファイル内で一致する行を検索しようとしていますが、「インデックス」または検索する一致項目のリストがあるファイルにも重複項目があり、重複項目も印刷したいと思います。
例:
ファイル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)