ファイルAに2つのファイルがあり、他のファイルBにシーケンス番号があります。列が多く、最初の列はシーケンス番号です。 Bのすべての行とシーケンス番号Aを含むファイルをインポートするにはどうすればよいですか?目標?ありがとう
ファイルAと同様
1
3
8
9
20
文書B
1 kfjk 3243424
2 fkdkf 23543592
3 iefjk 21493402
7 dlafdl 23435231
8 kfkdlkf 309834
答え1
私はあなたが欲しいと思いますjoin (1)
:
同じ結合フィールドを持つ各入力行ペアに対して、標準出力に1行を書き込みます。デフォルトの結合フィールドは最初にスペースで区切られます。 FILE1またはFILE2(両方ではない)が-の場合、標準入力を読み込みます。
[0 1075 12:50:10] ~/temp/sx % join A B
1 kfjk 3243424
3 iefjk 21493402
8 kfkdlkf 309834
join: file 1 is not in sorted order
sort (1)
さて、明らかにこれをアルファ値(数字ではなく20 < 3)で並べ替えることと比較する必要があります。
join <(sort A) <(sort B)
私にとってはうまくいきますが、奇妙に見えます。たぶんzsh拡張子かもしれません。こうしても悪いことはない
sort A > A.tmp; sort B > B.tmp; join A.tmp B.tmp
(いつものように、マンページで問題を確認してください。)