패턴이 다른 선을 제거해야 하는데,
예를 들어
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을 포함하지 않는 행만 인쇄하고 동일한 파일에 저장합니다.