vi
나 vim
내부에서 문자열을 찾아 삭제하는 명령어들을 사용할 수 있는데, 이는 sed
명령어를 사용하는 것과는 조금 다른 방식입니다. vi
나 vim
에서는 파일을 직접 수정하면서 볼 수 있는 장점이 있습니다.
단일 줄에서 문자열 삭제하기
vi
나 vim
에서 특정 문자열을 포함하는 모든 줄을 삭제하려면, 다음과 같은 명령을 사용할 수 있습니다:
:g/특정문자열/d
이 명령은 "특정문자열"을 포함하는 모든 줄을 찾아서 삭제합니다. g
는 전역(global) 검색을 의미하며, /d
는 삭제(delete)를 의미합니다.
줄바꿈을 포함하는 문자열 삭제하기
vi
나 vim
에서 줄바꿈을 포함하는 문자열을 삭제하는 것은 직접적으로는 지원되지 않습니다. 하지만 줄바꿈 문자를 직접 찾아서 다루는 대신, 연속된 줄들을 하나의 줄로 만든 후 문자열을 삭제하는 방법으로 해결할 수 있습니다.
예를 들어, "첫번째줄" 다음 줄에 "두번째줄"이 오는 경우 이 두 줄을 삭제하고 싶다면, 먼저 두 줄을 하나로 합치는 작업을 수행한 후 삭제해야 합니다. 이런 경우는 수동으로 처리하는 것이 더 쉬울 수 있습니다.
vi
나 vim
에서 문자열 수정하기
vi
나 vim
에서 문자열을 수정하거나 삭제하는 작업은 편집 모드와 명령 모드를 적절히 사용하여 수행됩니다. 특정 문자열을 삭제하고 싶은 경우, 다음 단계를 따르세요:
vi
또는vim
으로 파일을 엽니다.- 명령 모드에서
:/특정문자열
을 입력하여 문자열을 찾습니다. - 문자열이 포함된 줄에 대해
dd
를 사용하여 줄 전체를 삭제하거나,cw
를 사용하여 단어를 변경합니다. - 파일을 저장하고 종료하려면
:wq
를 입력합니다.
vi
나 vim
에서는 다양한 편집 기능과 함께 정규 표현식을 사용하여 복잡한 문자열 패턴을 검색하고 수정할 수 있습니다. 이러한 에디터들은 학습 곡선이 있지만, 익숙해지면 매우 강력한 텍스트 편집 기능을 제공합니다.
sed 이용 방법
엔터(줄바꿈) 문자를 포함한 문자열을 sed
명령어로 처리하고 싶을 때, 조금 더 복잡해질 수 있습니다. Bash에서는 일반적으로 엔터를 \n
으로 표현합니다. 하지만 sed
명령어에서는 패턴 공간(pattern space) 내에서 직접적으로 줄바꿈 문자를 다루는 것이 제한됩니다. 그러나 몇 가지 방법으로 이 문제를 해결할 수 있습니다.
예를 들어, 파일에서 특정 문자열과 그 뒤에 오는 엔터(즉, 문자열이 있는 줄 전체)를 제거하고자 한다면, 다음과 같이 할 수 있습니다. 이 예제에서는 "특정문자열"이 포함된 줄 전체를 찾아서 제거합니다:
sed '/특정문자열/d' 로그파일명
여기서 /특정문자열/d
는 "특정문자열"을 포함하는 모든 줄을 삭제(d
)하는 명령어입니다. 이 방법은 "특정문자열"이 포함된 줄 전체를 제거하는 가장 간단한 방법입니다.
만약 문자열 내에 실제로 엔터(줄바꿈)를 포함시켜야 한다면, 작업이 조금 더 복잡해집니다. 예를 들어, 두 줄에 걸쳐 있는 문자열을 다루고 싶다면, sed
의 다중 라인 패턴을 사용해야 합니다. 다음은 그 예시입니다:
sed ':a;N;$!ba;s/첫번째줄\n두번째줄//g' 로그파일명
이 명령어는 sed
의 고급 기능을 사용하여, "첫번째줄" 다음에 바로 "두번째줄"이 오는 패턴을 찾아 그 부분을 삭제합니다. 여기서 사용된 :a;N;$!ba
는 sed
에게 파일의 끝에 도달할 때까지 모든 라인을 패턴 공간으로 읽어들이도록 지시합니다. 이 방법은 복잡한 다중 라인 패턴을 다룰 때 유용하지만, 대규모 파일에는 성능 저하를 일으킬 수 있으므로 주의해서 사용해야 합니다.
이러한 방법들은 특정 문자열을 다루는 다양한 시나리오에 유용하게 적용될 수 있습니다. 하지만 사용하는 경우 맥락에 따라 적절한 명령어 선택과 옵션 사용이 중요합니다.
'IT > Software' 카테고리의 다른 글
Makefile 의 대입 연산자 - ?= vs = (1) | 2024.06.04 |
---|---|
엑셀에서 특정 값인 셀 배경 자동으로 바꾸기 (0) | 2024.05.14 |
VI 기능 - 문자열에서 바로 파일 열기 - gf (0) | 2024.03.29 |
SNMP - 용어 이해와 Arduino C 프로젝트들 (0) | 2024.01.26 |
안드로이드 앱 등록하기 - 기본 스토어 등록정보 (0) | 2023.12.15 |