一意の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
組み合わせが可能です。xargs
grep
xargs -I{} grep -Fw -- {} A.txt < B.txt