ファイルから単語に一致する行を削除する

ファイルから単語に一致する行を削除する

私のパターンに対応する他の単語を含むファイルがあります。

テキスト.TXT

842
897
907
967
995
1065
1095

word.txt一致時に削除したい行を含むその他のファイル

816.42743   9246.4688
832.41711   8867.3076
842.51001   23988.459
859.42639   5776.8726
870.53418   5992.9668
875.41742   6930.3584 
877.43384   35639.199 
885.51709   60137.957
891.41595   5480.983

したがって、新しいパディングはパターンの単語に一致する3行を削除する必要があります842

最終ファイルは次のようにする必要があります。

816.42743   9246.4688
832.41711   8867.3076
859.42639   5776.8726
870.53418   5992.9668
875.41742   6930.3584 
877.43384   35639.199 
885.51709   60137.957
891.41595   5480.983

ドットの前の数字だけを認識するには、単語のパターン(word.txt)も必要です。ありがとうございます。明確に説明できたらと思います。

ベストアンサー1

方法を使うGNU awkマニュアルに入ることをお勧めしますファイル分析:

awk -F '.' 'pass == 1 {seen[$0]}
            pass == 2 && !($1 in seen)' pass=1 words.txt pass=2 file

まず、各行($0)をwords.txt連想配列のキーとして保存しますseen

2番目のパスでは、file最初のフィールド($1)が存在しない行のみを印刷しますseen

-F '.'フィールド区切り記号(FS)をリテラルポイントに設定します。

出力:

816.42743   9246.4688
832.41711   8867.3076
859.42639   5776.8726
870.53418   5992.9668
875.41742   6930.3584 
877.43384   35639.199 
885.51709   60137.957
891.41595   5480.983

おすすめ記事