말로 설명하자니 조금 힘든데, 간단히 예를 들면 아래와 같아요
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ..................... 이렇게 한줄로 긴 문자열을
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 .... ....
이렇게 4자리 씩 끊어서 라인별로 쓸려면 어떻게 해야 할까요?
'foo,' 형태의 문자열이 4개 등장할 때마다 newline을 끼워넣는 치환 명령입니다. 결국 ','를 구분자로 쓰면서 4개 필드씩 끊어서 라인을 분리하는 셈이 됩니다.
:%s/\([^,]*,\)\{4}/&\r/g
만약 원본파일이 아래와 같았다면,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
위의 치환명령을 적용하면 아래와 같이 됩니다.
치환문을 좀 수정해서, 'foo, ' 식으로 ',' 뒤에 따라오는 공백까지 고려해서 만들면 아래와 같이 되고요.
:%s/\([^,]*,\s*\)\{4}/&\r/g
같은 원본파일에 적용하면 아래와 같이 됩니다.
만약 매 10글자마다 기계적으로 끊고 싶다면,
:%s/.\{10}/&\r/g
같은 원본파일에 적용하면,
1, 2, 3, 4 , 5, 6, 7, 8, 9, 10, 11, 12
이런식으로 정규식을 조금 궁리하면 어지간한 일은 가능할 것입니다. 아래 페이지에 간단히 정리된 vim 정규식 자료가 있네요.http://gypark.pe.kr/wiki/Vi%EB%A1%9C%EB%AC%B8%EC%9E%90%EC%97%B4%EC%B9%98%ED%99%98%ED%95%98%EA%B8%B0
그리고, vi 정규식 치환만으로 한계를 느낄만한 상황에서는 awk나 python, perl 등을 쓰시면 더 자유롭게 텍스트 자료를 조작할 수 있습니다.
공부를 해도 그 날 지나면 다 까먹고 ㅠㅠ
답변 너무 감사합니다. 열심히 익힐꼐요.
정규식은 ^, $, ., * 등 쉬운것부터 생활속에서 조금씩 쓰시다보면 익숙해집니다. 복잡한 것이 필요해지면 잠깐 문서와 씨름해서 알아내며 살을 붙여나가면 됩니다.
vi에서는 s 명령으로 치환할 때 뿐 아니라, / 명령으로 검색할 때, g 명령으로 대상을 찾을 때 등 여기저기서 정규식을 섞어쓸 수 있으니 평소 vi 쓸때 써 보세요.
그리고, 각종 unix 명령들에서도 여기저기 쓸 데가 많습니다. 조금이라도 알아두면 쓰게 되고, 모르고 있으면 엉뚱한 노가다로 해결하게 됩니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
'foo,' 형태의 문자열이 4개 등장할 때마다
'foo,' 형태의 문자열이 4개 등장할 때마다 newline을 끼워넣는 치환 명령입니다.
결국 ','를 구분자로 쓰면서 4개 필드씩 끊어서 라인을 분리하는 셈이 됩니다.
만약 원본파일이 아래와 같았다면,
위의 치환명령을 적용하면 아래와 같이 됩니다.
치환문을 좀 수정해서,
'foo, ' 식으로 ',' 뒤에 따라오는 공백까지 고려해서 만들면 아래와 같이 되고요.
같은 원본파일에 적용하면 아래와 같이 됩니다.
만약 매 10글자마다 기계적으로 끊고 싶다면,
같은 원본파일에 적용하면,
이런식으로 정규식을 조금 궁리하면 어지간한 일은 가능할 것입니다.
아래 페이지에 간단히 정리된 vim 정규식 자료가 있네요.
http://gypark.pe.kr/wiki/Vi%EB%A1%9C%EB%AC%B8%EC%9E%90%EC%97%B4%EC%B9%98%ED%99%98%ED%95%98%EA%B8%B0
그리고, vi 정규식 치환만으로 한계를 느낄만한 상황에서는
awk나 python, perl 등을 쓰시면 더 자유롭게 텍스트 자료를 조작할 수 있습니다.
정규식은 매번 볼때마다 신기하내요...
공부를 해도 그 날 지나면 다 까먹고 ㅠㅠ
답변 너무 감사합니다.
열심히 익힐꼐요.
정규식은 ^, $, ., * 등 쉬운것부터 생활속에서
정규식은 ^, $, ., * 등 쉬운것부터 생활속에서 조금씩 쓰시다보면 익숙해집니다.
복잡한 것이 필요해지면 잠깐 문서와 씨름해서 알아내며 살을 붙여나가면 됩니다.
vi에서는 s 명령으로 치환할 때 뿐 아니라, / 명령으로 검색할 때,
g 명령으로 대상을 찾을 때 등 여기저기서 정규식을 섞어쓸 수 있으니
평소 vi 쓸때 써 보세요.
그리고, 각종 unix 명령들에서도 여기저기 쓸 데가 많습니다.
조금이라도 알아두면 쓰게 되고, 모르고 있으면 엉뚱한 노가다로 해결하게 됩니다.
댓글 달기