문제
다음 중 vi 편집기에서 모든 windows라는 문자열을 linux로 치환하는 명령으로 알맞은 것은?
① :% s/linux/windows/g ② :% s/windows/linux/g ③ :% s/<linux>/windows/g ④ :% s/<windows>/linux/g
정답
2번
해설
정답: 2. vi 의 전역 치환은 ":%s/찾을문자열/바꿀문자열/g" 형식이다. windows 를 linux 로 모두 바꾸려면 찾을 문자열이 windows, 바꿀 문자열이 linux 여야 하므로 ":%s/windows/linux/g" 가 맞다.
오답 풀이
- 1번: ":%s/linux/windows/g" 는 방향이 반대로, linux 를 windows 로 바꾼다.
- 2번: windows→linux 로 올바르게 치환하므로 옳다.
- 3번: "<linux>" 는 단어 경계로 묶인 linux 를 windows 로 바꾸는 것이라 방향이 반대다.
- 4번: "<windows>" 는 단어 경계가 일치하는 windows 만 바꿔 문제의 "모든 windows" 의도와 결이 다르고, 보기 중 표준형은 2번이다.
보충 개념 ":%s/old/new/g" 에서 % 는 파일 전체 행, g 는 한 행 내 모든 일치, /gc 를 쓰면 치환 전 확인을 받는다. "<...>" 는 단어 단위 경계를 지정한다.