vi -- 줄의 일부에 있는 문자 바꾸기

vi -- 줄의 일부에 있는 문자 바꾸기

벨기에의 모든 도시에 관한 파일이 있습니다. 이들 도시 중 일부에는 행정 구역이 있습니다.

Lier;stad;Antwerpen;49,70;33930;Lier;Koningshooikt
Knokke-Heist;gem.;WestVlaanderen;56,44;33825;Knokke;Westkapelle;Heist;Ramskapelle

, and space하지만 행정 구역을 대신 사용하고 싶습니다 ;. 그래서 나는 이것을 얻고 싶습니다 :

Lier;stad;Antwerpen;49,70;33930;Lier, Koningshooikt
Knokke-Heist;gem.;West-Vlaanderen;56,44;33825;Knokke, Westkapelle, Heist, Ramskapelle

나는 vi그것을 정기적으로 사용하지만 이 대체품은 나에게 어렵습니다.

답변1

다음을 수행할 수 있습니다(GNU 가정 sed).

:%!sed 's/;/, /6g'

아래에서 6번째 것을 ;로 교체합니다 ,.

vimLookBehind 연산자를 사용하십시오 .

:%s/\v((;.*){5})@<=;/, /g

(즉, ;처음 5초 이상을 교체하십시오 ;.)

답변2

또 다른 방법 vim:

:g/^/call feedkeys("nnnnna") | s/;/, /gc

feedkeys()함수는 nnnnna키보드에서 문자열을 입력하는 것과 마찬가지로 문자열에 대해 작동하며, 바꾸기 플래그는 s사용자 에게 확인 후 모든 항목을 바꾸도록 지시합니다.gcvim

여기서는 처음 5번의 발생을 무시 nnnnn하고 a나머지는 모두 확인합니다.

g/^/명령이 모든 행에 적용되도록 합니다 .

관련 정보