예를 들어 vi 편집기에서 "today"라는 단어가 8줄 포함된 파일을 생성했는데, 명령 하나로 4줄을 "yesterday"라는 단어로 바꾸는 방법을 알고 싶습니다.
답변1
파일 내용에 대해 작동하는 대부분의 ex 명령(즉, :
(콜론)과 명령 이름을 눌러 호출되는 명령)은 명령 앞에 범위를 지정할 수 있습니다. 이 범위는 명령의 영향을 받는 행을 지정합니다. 범위의 일반적인 형태는 쉼표로 구분된 두 개의 숫자이며, 명령은 첫 번째 숫자부터 두 번째 숫자(포함)까지의 모든 행에서 작동합니다. 예를 들어
1,4s/today/yesterday/g
파일의 처음 네 줄에서 by를 모두 바꿉니다 today
.yesterday
숫자 앞에 기호를 추가하여 현재 줄을 기준으로 만들 수 있습니다. 예를 들어
-1,+1s/today/yesterday/g
이전 줄, 현재 줄, 다음 줄에 대해 교체를 수행합니다. 쉼표가 포함되어 있지만 숫자 중 하나가 생략된 경우 현재 줄을 나타냅니다.
,+1s/today/yesterday/g
현재 줄과 다음 줄을 교체합니다. $
숫자 대신 숫자를 사용하여 파일의 마지막 줄을 나타낼 수도 있습니다 . 쉼표를 생략하고 숫자만 지정하면 명령은 이 줄에서만 작동합니다.
+1s/today/yesterday/g
다음 줄에서만 교체를 수행하십시오.
답변2
다음 명령을 사용할 수 있습니다.
:n,m s/today/yesterday/
즉, n행에서 m행까지 "today"라는 단어를 "yesterday"로 바꿉니다.
답변3
이 시도:
vi 편집기의 명령 모드로 들어가서 다음 명령을 시도해 보십시오.
:%s/today/yesterday/g
g - 오늘을 전체적으로 어제로 바꿉니다.