最初の列に基づいて2つの異なるファイルを一致させる

最初の列に基づいて2つの異なるファイルを一致させる

だから、2つの異なるファイルがあります。

ファイル1.txtは次のとおりです。

abcdefjeiireiiioe:data:otherdata  
rijirjeiwrieeoooe:datamore:otherdatamore  

ファイル2.txtは次のとおりです。

abcdefjeiireiiioe:data:otherotherdata  
rijirjeiwrieeoooe:datamore:otherotherdatamore      
*other random lines which do not occur in file1.txt also and are not needed

次のように見えるように同じ行に印刷するにはどうすればよいですか?

abcdefjeiireiiioe:data:otherdata:data:otherotherdata

答え1

2行目もマージしたいとします。あなたはそれを使用することができますjoin

join -t : file1 file2

これは解析され、file1区切り文字file2として使用され、:最初のフィールドが一致する行をマージします。デフォルトでは、一致しない行は無視され、出力には表示されません。

入力ファイルは結合フィールドでソートする必要があります。そうでない場合は、次のように前処理できます。

join -t : <(sort -k 1,1 -t : file1) <(sort -k 1,1 -t : file2)

あるいは、ソートチェックを無視してみることもできます。

join -t : --nocheck-order file1 file2

関連情報