grep はパターンリストの重複値を探します。

grep はパターンリストの重複値を探します。

一意のID(列1)とその値(列2)のリストであるA.txtファイルがあります。

A.txt

ABC1D_T1_B1  123.4
ABC2D_T1_B2  146.7
ABC3D_T1_B1  567.8
ABC4D_T0_B2  96.8
ABC1D_T0_B1  145.9

2番目のファイルはB.txtであり、一意ではありませんが、重複したエントリがあります。

ABC1D_T1_B1
ABC1D_T1_B1
ABC2D_T1_B2
ABC3D_T1_B1
ABC3D_T1_B1
ABC4D_T0_B2
ABC1D_T0_B1
ABC1D_T0_B1

A.txtでB.txtをgrepし、重複リストの列2の値を報告する方法

結果:

ABC1D_T1_B1  123.4
ABC1D_T1_B1  123.4
ABC2D_T1_B2  146.7
ABC3D_T1_B1  567.8
ABC3D_T1_B1  567.8
ABC4D_T0_B2  96.8
ABC1D_T0_B1  145.9
ABC1D_T0_B1  145.9
ABC1D_T0_B1  145.9

通常、B.txtに固有のエントリがある場合

grep -Fw -f B.txt A.txt >Result.txt

grepを使用して複数の重複エントリを処理するにはどうすればよいですか?

答え1

簡単な方法でこれを行うことができますjoin

join A.txt B.txt

ただし、機能するには、両方のファイルを結合キー(ここでは最初の(スペースで区切られた)フィールド)に基づいてソートする必要があります。これを行うにはsort -b filename

答え2

次の項目もタグ付けしたためですawk

awk 'FNR == NR {a[$1] = $0; next}; {print a[$1]}' A.txt B.txt

私は一人の人がこれを行うことはできないと思いますが、次のgrep組み合わせが可能です。xargsgrep

xargs -I{} grep -Fw -- {} A.txt < B.txt

関連情報