파일에서 특정 텍스트가 포함된 줄 삭제

파일에서 특정 텍스트가 포함된 줄 삭제

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

관련 정보