본문 바로가기

vivim 내부에서 문자열을 찾아 삭제하는 명령어들을 사용할 수 있는데, 이는 sed 명령어를 사용하는 것과는 조금 다른 방식입니다. vivim에서는 파일을 직접 수정하면서 볼 수 있는 장점이 있습니다.

단일 줄에서 문자열 삭제하기

vivim에서 특정 문자열을 포함하는 모든 줄을 삭제하려면, 다음과 같은 명령을 사용할 수 있습니다:

:g/특정문자열/d

이 명령은 "특정문자열"을 포함하는 모든 줄을 찾아서 삭제합니다. g는 전역(global) 검색을 의미하며, /d는 삭제(delete)를 의미합니다.

줄바꿈을 포함하는 문자열 삭제하기

vivim에서 줄바꿈을 포함하는 문자열을 삭제하는 것은 직접적으로는 지원되지 않습니다. 하지만 줄바꿈 문자를 직접 찾아서 다루는 대신, 연속된 줄들을 하나의 줄로 만든 후 문자열을 삭제하는 방법으로 해결할 수 있습니다.

예를 들어, "첫번째줄" 다음 줄에 "두번째줄"이 오는 경우 이 두 줄을 삭제하고 싶다면, 먼저 두 줄을 하나로 합치는 작업을 수행한 후 삭제해야 합니다. 이런 경우는 수동으로 처리하는 것이 더 쉬울 수 있습니다.

vivim에서 문자열 수정하기

vivim에서 문자열을 수정하거나 삭제하는 작업은 편집 모드와 명령 모드를 적절히 사용하여 수행됩니다. 특정 문자열을 삭제하고 싶은 경우, 다음 단계를 따르세요:

  1. vi 또는 vim으로 파일을 엽니다.
  2. 명령 모드에서 :/특정문자열을 입력하여 문자열을 찾습니다.
  3. 문자열이 포함된 줄에 대해 dd를 사용하여 줄 전체를 삭제하거나, cw를 사용하여 단어를 변경합니다.
  4. 파일을 저장하고 종료하려면 :wq를 입력합니다.

vivim에서는 다양한 편집 기능과 함께 정규 표현식을 사용하여 복잡한 문자열 패턴을 검색하고 수정할 수 있습니다. 이러한 에디터들은 학습 곡선이 있지만, 익숙해지면 매우 강력한 텍스트 편집 기능을 제공합니다.

sed 이용 방법

엔터(줄바꿈) 문자를 포함한 문자열을 sed 명령어로 처리하고 싶을 때, 조금 더 복잡해질 수 있습니다. Bash에서는 일반적으로 엔터를 \n으로 표현합니다. 하지만 sed 명령어에서는 패턴 공간(pattern space) 내에서 직접적으로 줄바꿈 문자를 다루는 것이 제한됩니다. 그러나 몇 가지 방법으로 이 문제를 해결할 수 있습니다.

예를 들어, 파일에서 특정 문자열과 그 뒤에 오는 엔터(즉, 문자열이 있는 줄 전체)를 제거하고자 한다면, 다음과 같이 할 수 있습니다. 이 예제에서는 "특정문자열"이 포함된 줄 전체를 찾아서 제거합니다:

sed '/특정문자열/d' 로그파일명

여기서 /특정문자열/d는 "특정문자열"을 포함하는 모든 줄을 삭제(d)하는 명령어입니다. 이 방법은 "특정문자열"이 포함된 줄 전체를 제거하는 가장 간단한 방법입니다.

만약 문자열 내에 실제로 엔터(줄바꿈)를 포함시켜야 한다면, 작업이 조금 더 복잡해집니다. 예를 들어, 두 줄에 걸쳐 있는 문자열을 다루고 싶다면, sed의 다중 라인 패턴을 사용해야 합니다. 다음은 그 예시입니다:

sed ':a;N;$!ba;s/첫번째줄\n두번째줄//g' 로그파일명

이 명령어는 sed의 고급 기능을 사용하여, "첫번째줄" 다음에 바로 "두번째줄"이 오는 패턴을 찾아 그 부분을 삭제합니다. 여기서 사용된 :a;N;$!based에게 파일의 끝에 도달할 때까지 모든 라인을 패턴 공간으로 읽어들이도록 지시합니다. 이 방법은 복잡한 다중 라인 패턴을 다룰 때 유용하지만, 대규모 파일에는 성능 저하를 일으킬 수 있으므로 주의해서 사용해야 합니다.

이러한 방법들은 특정 문자열을 다루는 다양한 시나리오에 유용하게 적용될 수 있습니다. 하지만 사용하는 경우 맥락에 따라 적절한 명령어 선택과 옵션 사용이 중요합니다.

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.