シェルコマンドを使用して、両方のファイルの共通行を印刷します。

シェルコマンドを使用して、両方のファイルの共通行を印刷します。

たとえば、2つのファイルがあります。ファイル 1 には以下が含まれます。

12
13
14
15

ファイル 2 には以下が含まれます。

13,abc,xyz
14,def,ghi
15,klm,opq

file3の予想出力:

13,abc,xyz
14,def,ghi
15,klm,opq

私はLinuxコンピュータを使用しています。順序は何ですか?

ベストアンサー1

厳密に言えば、私たちは共通点に興味を持っていません。ワイヤー(与えられたデータに共通線はありません)が、最初の列のデータに基づく交差点にあります。

使用join:

$ join -t, File1 File2
13,abc,xyz
14,def,ghi
15,klm,opq

ユーティリティjoin会社は効果的です関係(内部)結合それぞれ固有のフィールド(デフォルトでは最初のフィールド)を持つ2つのファイル間の操作。私はこれを使用して、-t ,コンマがファイルのフィールド区切り文字であることを示します(そうでない場合はスペースを使用します)。デフォルトでは、このコマンドは両方のファイルの最初のフィールドに基づいて交差点を生成します。

質問にあるように見える結合フィールド(最初の列)で両方のファイルを並べ替える必要があります。ソートされていない場合は、次を使用してすぐにソートできます。

join -t, <( sort File1 ) <( sort File2 )

シェルがプロセス置換をサポートしている場合。

おすすめ記事