数値を比較し、詳細を収集して新しいファイルに出力を提供します。

数値を比較し、詳細を収集して新しいファイルに出力を提供します。

ファイル1以下のように多くの数字が含まれています。

345656565465
783329439432
345656565465
783329439432
.......

ファイル2:

345656565465;ram;dfdfdf54532fdf;...............................
783329439432;sam;dfsdgg543546fg;...............................
768737228732;bheem;dfsdg5465464767g;...........................
34565656546575;hema;jsdsds45345455h;..........................

希望の出力:ファイル1地図を検索する必要がありますファイル2そして入れてファイル3(出力) 次のようになります。

345656565465;ram;dfdfdf54532fdf;...............................
783329439432;sam;dfsdgg543546fg;...............................

これまで私は次のことを試しました。

$ awk -F'|' 'NR==FNR{c[$1$2]++;next};c[$1$2] > 0' file2 file1

また、Perlを試してみましたが、目的の出力を提供していないので、これが正しいかどうかはわかりません。

perl -e 'open(A, "file2"); while(<A>){/.+?\|[^|]+/ && $k{$&}++};
while(<>){/.+?\|[^|]+/ && do{print if defined($k{$&})}}' file1

私が直面する問題は、数字だけをgrepする必要がありますが、私のコードでは、同じパターンを含む大きな数字をインポートして3番目のファイルに貼り付ける必要があります。私がこれを達成するのを助けてください:)

答え1

あなたはほぼ成功しました

awk -F';' 'NR==FNR{c[$1]++;next ;} c[$1] > 0' file1 file2

どこ

  • -F';'パイプの代わりにセミコロンを区切り文字として使用します。
  • 最初のものを使用してfile1番号をキャプチャします。
  • 最初の列を選択したいと思います。

関連情報