문제
Linux의 VI편집기를 이용하여 파일의 내용을 수정할 때, 다음 내용을 만족하는 치환명령문은?
- 10행부터 20행까지 내용 중 'old' 문자열을 'new' 문자열로 수정한다.
- 각 행에 'old' 문자열이 여러 개 있어도 전부 수정한다.
① :10,20s/old/new ② :10,20s/old/new/g ③ :10,20r/old/new ④ :10,20r/old/new/a
정답
2번
해설
정답: 2. vi의 범위 치환 명령은 ':시작행,끝행s/찾을문자열/바꿀문자열/g' 형식이다. 10~20행을 대상으로 하고, 한 행에 여러 개 있어도 모두 바꾸려면 끝에 g 플래그가 필요하므로 ':10,20s/old/new/g'가 정답이다.
오답 풀이
- 1번: ':10,20s/old/new'는 g가 없어 각 행에서 처음 나오는 'old' 하나만 바꾼다.
- 2번: ':10,20s/old/new/g'는 10~20행의 모든 'old'를 전부 바꾸므로 정답이다.
- 3번: ':10,20r/old/new'의 r은 파일 읽기(read) 명령이라 치환과 무관하다.
- 4번: ':10,20r/old/new/a'도 치환 형식이 아니며 유효한 치환 명령이 아니다.
보충 개념 vi 치환: ':%s/old/new/g'는 전체 파일, ':s/old/new/g'는 현재 행, 끝의 g는 행 내 전체, c는 확인(confirm) 옵션이다. s는 substitute(치환) 명령이다.