저는 다양한 소스의 "호스트" 파일을 사용하고 있으며 일부 사이트의 차단을 해제하려면 다음 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
분명히 필요한 경우 여러 공백을 처리하도록 쉽게 개선될 수 있습니다.