次のように、タブで区切られた値を持つ2つのファイルがあります。
ファイル1:
A 1
B 3
C 1
D 4
ファイル2:
E 1
B 3
C 2
A 9
列1に同じ文字列を持つファイル1とファイル2の間の行を見つけて、その値を取得したいと思います。必要な出力は、次のような単一ファイルです。
B 3 3
C 1 2
A 1 9
Unix one-linerでこれは可能ですか?
ベストアンサー1
join
結果の行順序が関連しない場合、GNU coreutilsには必要な操作を正確に実行するコマンドが含まれています。
join <(sort file1) <(sort file2)
A 1 9
B 3 3
C 1 2
タブを復元するには:
join <(sort file1) <(sort file2) | tr ' ' '\t'
A 1 9
B 3 3
C 1 2
またはt
オプションを使用してくださいjoin
。
(<()
別名プロセスの交換、ksh93(この機能のソース)、bashまたはzshが必要)