sed 표현식 수정

sed 표현식 수정

저는 다양한 소스의 "호스트" 파일을 사용하고 다음 SED 코드를 사용하여 특정 웹사이트의 차단을 해제합니다.

sed -i '/0.0.0.0 internet.com/s/^/#/g' /tmp/hosts

결과:

앞에 #이 붙는다

0.0.0.0 internet.com

뿐만 아니라

0.0.0.0 internet.com.site

나는 그것을 고쳐야한다.

답변1

완전한 줄만 일치시키려면 완전한 줄을 지정하십시오.

sed -i '/^0.0.0.0 internet.com$/s/^/#/g' /tmp/hosts

^대체된 검색 모드에서 이미 사용했기 때문에 이러한 방법은 오프라인으로 실행됩니다.

$줄의 끝을 나타냅니다 .

따라서 하위 문자열로 포함된 행뿐만 아니라 ^0.0.0.0 internet.com$정확하게 일치하는 행만 일치됩니다 .0.0.0.0 internet.com

답변2

이것이 내가 사용하는 것입니다. 별칭이 포함된 항목도 처리합니다.

$ cat -vet hosts
0.0.0.0 internet.com internet$
0.0.0.0 internet.com^Iinternet$
0.0.0.0 internet.com$
0.0.0.0 internet.com.site$

$ sed  's/^0.0.0.0 internet.com\( \|\t\|$\)/# &/' hosts
# 0.0.0.0 internet.com internet
# 0.0.0.0 internet.com  internet
# 0.0.0.0 internet.com
0.0.0.0 internet.com.site

필요한 경우 여러 공백을 처리하도록 쉽게 개선할 수 있습니다.

관련 정보