ソース ファイルと抽出されたデータの並べ替えられたバージョンを一時ファイルに保存できます。標準の POSIX ツールを使用してcomm
、共通の行/レコードを表示できます。これらの行レコードは、後続の抽出ジョブで使用する「フィルター」の基礎になります。コマンドをsource.txt
使用してファイルからレコードを抽出している場合は、スクリプトの一部のようなものになります。最良の結果を得るには、およびファイルをソートする必要があります。$SHELL
grep -v [list of common lines]
source.txt
extracted.txt
comm
以下は、典型的な出力の簡単なカット アンド ペーストです。このシーケンスは、「大きなファイル」、抽出されたデータ、そしてファイルcomm
に固有の行を示す最後のコマンドを示していsource.txt
ます (動作については、を参照man comm(1)
してくださいcomm
)。grep
続いて、共通ファイルを除外する「フィルタ」として任意のパターンを使用して検索する例を示します。
% cat source.txt
3120987654
3106982658
3420787642
3210957659
3320987654
3520987654
3520987754
3520987954
3520988654
3520987444
% cat extracted.txt
3120987654
3106982658
3420787642
3210957659
3320987654
% comm -2 -3 source.txt extracted.txt # show lines only in source.txt
3520987754
3520987954
3520988654
3520987444
comm
2 つのファイルに共通する行を選択または拒否します。このユーティリティは、IEEE Std 1003.2-1992 (「POSIX.2」) に準拠しています。で使用するために出力を保存できますgrep
。
% comm -1 -2 source.txt extracted.txt | sort > common.txt
% grep -v -f common.txt source.txt | grep -E ".*444$"
これによりgrep
、と に共通するファイルとsource.txt
除外行が削除されます。次にパイプ ( ) を実行し、これらの「フィルター処理された」結果を抽出して新しいレコードを取得します (この場合、「444」で終わる行または行)。ファイルが非常に大きい場合、または元のファイルと抽出されたデータの数字の順序を維持したい場合は、質問がより複雑になり、応答がより複雑になる必要があります。source.txt
extracted.txt
|
grep
私の他の応答または を使用する単純な代替アプローチの開始を参照してくださいperl
。