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を含むすべての行と一致する必要があります。sed
example.com
sed -i 's@.*\(test\|example\)\.com.*@@i' file.txt