입력하다
- 각 줄은 세미콜론으로 8부분으로 구분됩니다.
- 각 부분에는 단어, 숫자, 공백 등이 포함될 수 있습니다.
산출
여섯 번째 섹션의 공백을 세미콜론으로 대체하여 줄을 다시 분리하여 총 섹션 수를 9개로 만들려고 합니다.
예
1;30;68;Az LEMda;Ads Awdsâ;1 Bethesda, Galilea, Impe Mkals;29;63
264;16 October 1978;2 April 2005;AAz Jgfg adal II;Madwl Qózca Asdtyła;20 May 1920 Maklo, Polasn;58;84
그것은 다음과 같이 끝날 것입니다
1;30;68;Az LEMda;Ads Awdsâ;1;Bethesda, Galilea, Impe Mkals;29;63
264;16 October 1978;2 April 2005;AAz Jgfg adal II;Madwl Qózca Asdtyła;20;May 1920 Maklo, Polasn;58;84
노력하다
공간을 찾기 위해 정규식의 모든 것을 사용해 보았지만 \zs
실패했습니다. 내가 얻은 가장 가까운 것은 다섯 번째 세미콜론을 찾는 것이었습니다.
%s/\(.\{-};\zs\)\{5}/;/g
하지만 5번째 세미콜론 다음의 숫자 뒤에 공백을 찾아야 하므로 이 아이디어는 아무데도 연결되지 않습니다. 이제 이전에 정의한 섹션에서 공백을 찾으려고 합니다.
vim을 입력할 수 있지만 awk
다시 말하지만 저는 vim을 처음 접합니다. 여섯 번째 부분을 찾아 공백을 세미콜론으로 변경했지만 첫 번째 공백뿐만 아니라 모든 공백이 변경되었습니다.
:%! awk 'BEGIN{FS=OFS=";"} {gsub(/ /, ";", $6)} 1'
여섯 번째 부분의 첫 번째 공백을 어떻게 변경할 수 있나요?
답변1
빔에서:
%s/^\(\([^;]*;\)\{5\}[^ ;]*\)\s/\1;/
의미는 다음과 같습니다
다음으로 선택
\1
- 줄의 처음부터
^
- 세미콜론이 아닌 문자열 5개
\{5\}
뒤에 세미콜론이 옵니다. - 6번째 필드에 세미콜론이나 공백이 아닌 선행 문자를 추가합니다.
- 줄의 처음부터
그 뒤에 공백이 있다
\1
선택 항목 과 세미콜론 으로 바꿉니다 .