"sed" 명령은 특수 문자를 제외하고 정확히 일치하는 문자열이 있는 줄을 삭제합니다.

"sed" 명령은 특수 문자를 제외하고 정확히 일치하는 문자열이 있는 줄을 삭제합니다.

아래 파일에서 한 줄을 삭제하려고 합니다.

localhost
localhost23
localhost-2.com
localhost-loopback.com
localhost.utopiad.com
localhostr.com

사용sed '/^localhost\b/d' file

localhostr.com왜 두 줄 과 합계 만 인쇄되는지 이해가 되지 않습니다 . 그 줄만 삭제하고 localhost23싶은데 ...localhost

답변1

\bGNU sed의 단어 경계, 즉 "단어 문자"와 단어가 아닌 문자 사이의 지점을 일치시킵니다. 문자, 숫자, 밑줄은 전자이고 점과 대시(무엇보다도)는 후자이므로 줄 끝 과 점과 대시 앞에 localhost단어 경계가 있습니다 . 그러나 t와 사이 2또는 t과 사이에는 해당되지 않습니다 r.

해당 단어가 포함된 줄만 제거하려면 , 또는 even ( 역방향 일치, 고정 문자열 일치, 전체 줄 일치) 을 localhost사용하세요 .sed -e '/^localhost$/d'grep -vFx 'localhost'-v-F-x

또는 뒤에 공백이 있는 경우:sed -e '/^localhost[[:blank:]]*$/d'

관련 정보