아래 파일에서 한 줄을 삭제하려고 합니다.
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'