ファイルからパターンが異なる行を削除する

ファイルからパターンが異なる行を削除する

パターンが異なる線を削除する必要がありますが、

例えば

sed '/Paris/d' file.txt |  cat -s
sed '/London/d' file.txt |  cat -s
sed '/Rome/d' file.txt |  cat -s
sed '/Pais/d' file.txt |  cat -s

一連の都市名を使用し、sedコマンドを一度だけ入力してこれを行うにはどうすればよいですか?

答え1

sed次の方法で使用できます。

sed '/paris\|london\|rome\|pais/Id' cities

I一致する大文字と小文字がないことは、dパターン空間内の一致するすべての行を削除することを意味します。

答え2

awkを使用してください:

awk '{if(match(tolower($0),/(paris|london|rome)/)==0) print $0}' file > file

tolower一致する場合は、行全体を小文字に変換します。
matchそれ以外の場合は、部分文字列の開始位置を返します。 0

awk は Paris、London、Rome を含まない行のみを印刷し、同じファイルに保存します。

関連情報