ファイルから特定のテキストを含む行を削除する

ファイルから特定のテキストを含む行を削除する

1行に1つの電子メールを含む電子メールのリストを含むファイルがあります。example.com文字列またはを含む行を削除したいですtest.com

私はこれを試しました:

sed -i 's/example\.com//ig' file.txt 

ただし、文字列のみが削除されますexample.com。行全体をどのように削除できますか?

答え1

GNU sedの使用:

sed '/example\.com/d;/test\.com/d' -i file.txt

example.comとのある行が削除されますtest.com

からman sed

d      Delete pattern space.  Start next cycle.

答え2

POSIXlyでは、以下を使用できますgrep

grep -Eiv '(example|test)\.com' <in >out

答え3

正規表現はsだけ空のexample.com文字列と一致して置き換えられます。正規表現は、example.comまたはtest.comを含むすべての行と一致する必要があります。sedexample.com

sed -i 's@.*\(test\|example\)\.com.*@@i' file.txt

関連情報