한 줄에 하나의 이메일이 포함된 이메일 목록이 포함된 파일이 있습니다. 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