私は2つのファイルを持っています。一つは最初のフィールドが別のファイルに保存されたリストと一致する場合に行を抽出する - シェルコマンド
Allie
Bob
John
Laurie
別のファイル(FILE2)が異なる順序で項目の別のリストが含まれていますが、いくつかの項目は、例えば、ファイル1内の項目で
Laurie 45 56 6 75
Moxipen 10 45 56 56
Allie 45 56 67 23
を重複する場合があり、例えば、アイテムのリストが含まれています
私はこれらの2つのファイルを交差し、最初のフィールドフィールド内の項目と一致する1
すなわちファイル2からの行だけを抽出したい、私の出力は
Allie 45 56 67 23
Laurie 45 56 6 75
012でなければなりません
(できればこの順であることが好ましいが、それ以外の場合は問題ありません)
grep -f file1 file2
私がしたいことはありません。
2番目のファイルが大量であるため、効率的なものも必要です。
また、私はこれを試してみました:
awk -F, 'FNR==NR {a[$1]=$0; next}; $1 in a {print a[$1]}' file2 file1
[Bashの別の大きなテキストファイルからテキストファイルの行を探す最速の方法](https://stackoverflow.com/questions/42239179/fastest-way-to-find-lines-of-a) -text-file-from-another-larger-text-file-in-bash) – Sundeep
ポインタをありがとう。ではない正確に。 – Bondrak
ソート順を保持する必要がありますか?あなたが参加しているフィールドをソートしたいなら、 'join'コマンドはこの仕事をすることができます(' sort'を使ってインラインで/プロセス置換を行うことができます)。 –