![패턴이 전체 단어와 일치하는 경우에만 패턴 바꾸기 [중복]](https://linux55.com/image/108992/%ED%8C%A8%ED%84%B4%EC%9D%B4%20%EC%A0%84%EC%B2%B4%20%EB%8B%A8%EC%96%B4%EC%99%80%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EA%B2%BD%EC%9A%B0%EC%97%90%EB%A7%8C%20%ED%8C%A8%ED%84%B4%20%EB%B0%94%EA%BE%B8%EA%B8%B0%20%5B%EC%A4%91%EB%B3%B5%5D.png)
다음과 같은 것으로 교체하려고 한다고 가정해 보겠습니다.
asdasdasdHit Hitasdasd Hit Hit
Hitasda Hit Hit asdaHit Hit Hit
Hit Hitasda Hit
...
...
모든 "깨끗한" 클릭을 "확인"으로 바꾸는 방법이 있습니까? /g를 시도했지만 모든 것이 정상이었고 s/\ Hit\ /OK/g
줄 바꿈 클릭이 사라졌습니다.
답변1
예.
$ sed 's/\<Hit\>/OK/g' file
asdasdasdHit Hitasdasd OK OK
Hitasda OK OK asdaHit OK OK
OK Hitasda OK
...
...
\<
단어 시작 부분에서 길이가 0인 단어 경계를 일치시키고 단어 \>
끝에서도 동일한 작업을 수행합니다.
이것길이가 0이다및 \<
는 \>
문자 자체와 일치하지 않지만 단어 경계에서는 인접한 패턴이 일치하도록 강제한다는 의미입니다.
ㅏ단어 경계영숫자 문자가 영숫자가 아닌 문자에 인접한 문자열의 지점입니다. 예를 들어 문자열의 ␣
(공백)과 지점(다른 공백) 사이의 지점 이나 개행 문자 바로 사이와 사이의 지점이 이어집니다. H
샘플 데이터의 세 줄 모두에 있습니다.t
␣
␣Hit␣
t
GNU의 경우 sed
and 대신 사용할 수 있습니다 \b
(and도 이해하지만).\<
\>
\<
\>
$ sed 's/\bHit\b/OK/g' file
...하지만 BSD는 sed
이해하지 못합니다 \b
.