ファイルAに2つのファイルがあり、他のファイルBにsequence_numbersがあり、多くの列があり、最初の列がシーケンス番号です。Bのすべての行にシーケンス番号が含まれているファイルを取得したいと思います。 Aどうすればこれを達成できますか?ありがとう
ファイルAのように
1
3
8
9
20
ファイルB
1 kfjk 3243424
2 fkdkf 23543592
3 iefjk 21493402
7 dlafdl 23435231
8 kfkdlkf 309834
join (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
_
(いつものように、落とし穴がないかマニュアルページを確認してください。)