파일에서 패턴이 다른 줄 삭제

파일에서 패턴이 다른 줄 삭제

패턴이 다른 선을 제거해야 하는데,

예를 들어

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을 포함하지 않는 행만 인쇄하고 동일한 파일에 저장합니다.

관련 정보