리눅스 vi에서 특정 패턴이 들어간 연속된 라인 제거하는 방법 문의

stock9343의 이미지

안녕하세요.
리눅스의 특정 파일의 내용중에서
.SUBCKT AAA_IP
MMNP VSS VDD
MMNP1 VSS VDD
MMNN VDD VSS
MMNN1 VDD VSS
.ENDS
라는 내용이 포함되어 있을 때
.SUBCKT AAA_IP가 들어간 패턴
(시작점)에서
.ENDS(끝점)까지의 모든 내용을
제거하고 싶을 때
vi 명령을 어떻게 구성해야 되는지 문의드립니다

구글에서 vi범위 설정 시,
전부 1,0 .,$, %와 같은
사용자가 지정해야 되는 범위에 대한
설정밖에 없는데, 특정 패턴을 검색에서
범위를 시작에서 끝까지 잡고
지우거나 치환하는 방법 공유부탁드립니다

chanik의 이미지

vim에서 줄번호 말고 정규식으로 범위를 지정할 수도 있네요.
이런 거 안 되는 줄 알았는데 해 보니 되는군요.

:/\.SUBCKT AAA_IP/,/\.ENDS/d

그런데, 저런 범위가 복수개 있을 경우 현 커서 위치 이후 처음 등장하는 범위 하나만 삭제됩니다. 해결방법이 있는지 모르겠는데, 그냥 vim 대신 sed 쓰면 복수개의 범위 모두 삭제됩니다.

$ sed -e '/\.SUBCKT AAA_IP/,/\.ENDS/d' infile > outfile

원본파일을 바로 수정하려면 아래와 같이 합니다.

$ sed -i -e '/\.SUBCKT AAA_IP/,/\.ENDS/d' infile

stock9343의 이미지

감사합니다 ㅎㅎ
구글에 아무리 찾아봐도 없길래, 문의드렸는데..
출근해서 업무에 적용해봐야 겠네요 ㅎ
감사합니다 ~~~

ymir의 이미지

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

chanik의 이미지

올려주신 링크 내용을 보니
vim에서도 g 명령을 쓰면 범위 여러 개가 일괄처리되는군요.
아래 두 방식 다 동작하네요. 덕분에 모르던 것을 배우고 갑니다.

:g/\.SUBCKT AAA_IP/,/\.ENDS/d

:g/\.SUBCKT AAA_IP/ .,/\.ENDS/d
jick의 이미지

스크립트를 쓰거나 여러 번 해야 하면 위의 방법이 편리한데, 눈으로 보면서 수동으로 고칠 때엔 이런 방법도 있습니다.

/AAA_IP (Enter) -> 커서는 AAA_IP 위에 위치
V -> line selection 시작
/\.ENDS (Enter) -> AAA_IP에서부터 .ENDS가 있는 라인까지 선택
d -> 선택된 범위 삭제

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.