ファイルを1行ずつマージ

ファイルを1行ずつマージ

単純なbashスクリプトを使用するか、提供された指示に従ってFile1新しいフル行をコピーできますか?File3File2sedawk

File1: /*two or more columns*/
AC    456324
DC    689712
GH    123677
KL    236587

File2: /*one column*/
AC
DC

File3: 
AC    456324
DC    689712

私は実際にPython辞書を使ってこれをやっていますが、簡単な解決策を知っていますか?

答え1

そしてgrep

grep -Ff File2 File1

そしてawk

awk 'NR==FNR {a[$1]++;next} a[$1]' File2 File1

答え2

あなたはそれを使用することができますjoin特定の列の値が同じ2つのファイルの場所を連結して、2つのファイルの行をマージします。入力ファイルは、この列の値に基づいてソートする必要があります。

join File1 File2

ファイルがソートされていない場合は、bash / ksh93 / zshから:

join <(sort File1) <(sort File2)

ここに結合するフィールドは、AC以下を含むフィールドです。DC以下は、結合するフィールドがの列3と列File12の場合の例ですFile2

join -1 3 -2 2 <(sort -k3,3 File1) <(sort -k 2,2 File2)

関連情報