반응형
파일 내에 특정 단어가 들어간 라인을 지워야하는데 해당 내용이 너무 많을 경우, 그것을 일일이 지우기란 참 번거롭다.
이럴때 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 인 라인 하나만 삭제되는 것을 확인할 수 있다.
특정 문자의 앞과 뒤에 \< 와 \> 로 감싸주면 해당 단어만이라는 것을 의미한다.
원하는 목표에 따라 특정 단어를 삭제해주면 될 것 같다 :)
반응형
'OS' 카테고리의 다른 글
[Windows] .bat 파일을 이용하여 파일 자동으로 삭제하기 (feat. forfiles) (11) | 2020.10.28 |
---|---|
[Windows] 파일 내용 하나로 합치기 (TYPE 명령어) (2) | 2020.08.14 |