문제
다음 중 vi 편집기에서 ihd라는 단어를 kait로 치환하는 명령으로 알맞은 것은?
① :% s/^ihd/kait/g
② :% s/^ihd$/kait/g
③ :% s/
정답
4번
해설
정답: 4. 정확히 'ihd'라는 단어만 치환하려면 단어 경계 메타문자 < 와 > 를 써서 :% s/<ihd>/kait/g 로 지정한다. 이렇게 하면 ihduser 같은 부분 일치는 제외된다.
오답 풀이
- 1번: /^ihd/ 는 줄의 맨 앞에 오는 ihd 만 대상으로 하여, 줄 중간의 단어는 치환하지 못한다.
- 2번: /^ihd$/ 는 한 줄 전체가 정확히 ihd 인 경우만 치환한다.
- 3번:
는 vi 정규식에서 단어 경계로 동작하지 않는다(역슬래시가 필요하다). - 4번: <ihd> 는 단어 경계를 지정해 'ihd' 단어만 정확히 치환하므로 옳다.
보충 개념 vi 치환 형식은 :범위 s/패턴/대체/플래그 이다. < 는 단어의 시작, > 는 단어의 끝 경계를 의미하고, g 플래그는 한 줄 내 모든 일치를 치환한다.