以下のように4つのファイルがあります。
ファイル1コンテンツ(タブ区切り、3列):
applepen apple pen
strawberry straw berry
ファイル2の内容:
applepen
strawjelly
ファイル3コンテンツ(このファイルはソートされています):
apple
fan
straw
ファイル4コンテンツ(このファイルはソートされています):
pen
zenith
ファイル1のフィールド1をファイル2と、ファイル1のフィールド2をファイル3と、ファイル1のフィールド3をファイル4と比較する必要があります。 3つの一致がすべて見つかったら、ファイル1のフィールド1、2、3を印刷したいと思います。ファイル1のすべての行に対してこれを行いたいと思います。
ここで出力は次のようになります。
applepen apple pen
grepやcommなどを使ってこれを行う方法はありますか?
ベストアンサー1
これは仕事ですjoin
。
$ cat file1
applepen apple pen
strawberry straw berry
$ cat file2
applepen
strawjelly
$ cat file3
apple
fan
straw
$ cat file4
pen
zenith
$ join file[12] | join -1 2 -o 1.1,1.2,1.3 - file3 | join -1 3 -o 1.1,1.2,1.3 - file4
applepen apple pen
$
空白以外のタブに本当に興味がある場合は、を使用して再翻訳できます| tr ' ' '\t'
。