본문 바로가기

OS

[Linux] vi 특정 단어 라인 삭제

반응형

 

 


 

 

파일 내에 특정 단어가 들어간 라인을 지워야하는데 해당 내용이 너무 많을 경우, 그것을 일일이 지우기란 참 번거롭다.

이럴때 vi 편집기에서 명령어를 통해 한 번에 특정 단어가 들어간 라인을 모두 지워줄 수 있다.

 

아래의 명령어를 통해 지워줄 수 있다.

:g/특정단어/d 또는 :% g/특정단어/d
:g/\<특정단어\>/d 또는 :% g/\<특정단어\>/d

 

단, 두 명령어에 차이가 존재한다.

 

먼저, 특정 단어가 포함한 모든 라인을 지우고 싶을 경우, 아래 명령어를 사용한다.

:g/특정단어/d 또는 :% g/특정단어/d

 

그리고 특정 단어만 들어있는 라인을 지우고 싶을 경우에는 아래 명령어를 사용하면 된다.

:g/\<특정단어\>/d 또는 :%/\<특정단어\>/d

 

여기서, % 는 전체 라인을 뜻한다.

 

 

예를 들어보자.

 

아래와 같은 내용이 존재하는 test.sql 파일이 있다.

 

[root@per]# cat test.sql
test1
test
testest

 

이 중 test 라는 단어를 지워줄건데 각 명령어를 통해 어떤 라인이 삭제되는지 보자.

 

vi test.sql 을 통해 vi 편집기로 이동 후 아래의 명령어 중 하나를 입력해보자. (둘 다 결과 동일하므로 하나 택)

:g/test/d
:% g/test/d

 

위 명령어를 입력 후 엔터를 치면 test 라는 단어가 들어가는 세 라인 모두가 삭제되는 것을 확인할 수 있다.

 

 

 

이번엔래의 명령어 중 하나를 입력해보자. (둘 다 결과 동일하므로 하나 택)

:% g\/<test\>/d

 

:g\/<test\>/d

 

위 명령어를 입력 후 엔터를 치면 오직 test 인 라인 하나만 삭제되는 것을 확인할 수 있다.

 

 

특정 문자의 앞과 뒤에 \< 와 \> 로 감싸주면 해당 단어만이라는 것을 의미한다.

 

 

원하는 목표에 따라 특정 단어를 삭제해주면 될 것 같다 :)

 

 

반응형