私のパターンに対応する他の単語を含むファイルがあります。
テキスト.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