!["sed" 명령은 특수 문자를 제외하고 정확히 일치하는 문자열이 있는 줄을 삭제합니다.](https://linux55.com/image/135875/%22sed%22%20%EB%AA%85%EB%A0%B9%EC%9D%80%20%ED%8A%B9%EC%88%98%20%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EC%A0%9C%EC%99%B8%ED%95%98%EA%B3%A0%20%EC%A0%95%ED%99%95%ED%9E%88%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%EC%A4%84%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
아래 파일에서 한 줄을 삭제하려고 합니다.
localhost
localhost23
localhost-2.com
localhost-loopback.com
localhost.utopiad.com
localhostr.com
사용sed '/^localhost\b/d' file
localhostr.com
왜 두 줄 과 합계 만 인쇄되는지 이해가 되지 않습니다 . 그 줄만 삭제하고 localhost23
싶은데 ...localhost
답변1
\b
GNU sed의 단어 경계, 즉 "단어 문자"와 단어가 아닌 문자 사이의 지점을 일치시킵니다. 문자, 숫자, 밑줄은 전자이고 점과 대시(무엇보다도)는 후자이므로 줄 끝 과 점과 대시 앞에 localhost
단어 경계가 있습니다 . 그러나 t
와 사이 2
또는 t
과 사이에는 해당되지 않습니다 r
.
해당 단어가 포함된 줄만 제거하려면 , 또는 even ( 역방향 일치, 고정 문자열 일치, 전체 줄 일치) 을 localhost
사용하세요 .sed -e '/^localhost$/d'
grep -vFx 'localhost'
-v
-F
-x
또는 뒤에 공백이 있는 경우:sed -e '/^localhost[[:blank:]]*$/d'