sed를 사용하여 파일에서 특정 줄을 삭제하는 방법

특정 경우에 파일에서 특정 줄을 삭제해야하는 경우가 있습니다. 예를 들어 전체 파일 목록을 가지고 있고이 모든 파일의 27 번째 줄을 삭제해야합니다 (줄 # 27은 ACL, 규범, 규칙, 구성), 파일별로 파일을 편집하거나 명령을 사용하여 필요한 것을 얻을 수 있습니다. SED 및 bash 스크립트 (선택 사항).

그러나 하나의 파일을 다소 간단하게 시도해 봅시다.

우리는 파일이 있습니다 배포판-deb.txt 다음을 포함합니다.

데비안

쿠분투

archlinux

솔 루스

박하

즉, 파일 배포판-deb.txt 데비안 기반 배포판을 넣을 것입니다.하지만 3 번 줄에는 "archlinux"라는 것이 있습니다. 배포판은 데비안과 관련이없는 것이 분명합니다. 그래서 우리는 그 줄을 제거해야합니다. 해당 파일의 3 번째 줄을 제거하기 위해 다음을 입력합니다.

sed "3d" distros-deb.txt > distros-deb-ok.txt

이 줄을 설명하는 것은 다소 쉽습니다. 목 마른 "3d" 우리는 라인 # 3을 삭제할 것임을 나타냅니다. 배포판-deb.txt 작업 할 파일을 지정합니다. 즉,이 파일의 3 번째 줄을 삭제합니다. 여기까지 Enter 키 를 누르면 원하는 내용이 터미널에 표시됩니다. > distros-deb-ok.txt 결과를 터미널에 표시하는 대신이 이름의 파일에 넣는 것을 나타냅니다.

무엇이 간단합니까?

또한, 우리는 > distros-deb-ok.txt 적절한 매개 변수 사용 SED, 매개 변수 -i

즉, 파일에서 줄을 제거하고 다른 파일이 아닌 동일한 이름으로 저장하려면 매개 변수를 추가하면됩니다. -i :

sed -i "3d" distros-deb.txt

distros-deb.txt에서 줄 # 3을 제거하고 저장합니다.

줄의 범위를 원하면 줄 # 3뿐만 아니라 # 4 및 # 5도 제거하려면 어떻게해야합니까? 이를 달성하기 위해 3에서 5까지의 범위를 입력합니다.

sed -i "3,5d" distros-deb.txt

그리고 데비안과 쿠분투 만 표시됩니다 😀

그래서 전체 라인을 모를 때 라인 2에서 마지막 라인까지 삭제하려면 어떻게해야합니까?

달러 기호를 사용하십시오-»$

sed -i "2,$d" distros-deb.txt

첫 번째 줄에서 # 4까지 제거하려면 처음에 값 1을 입력하면됩니다.

sed -i "1,4d" distros-deb.txt

이것은 작업을 자동화하기 위해 bash 스크립트를 작성하고 구성 파일 행을 수정하고 제거해야 할 때 매우 유용한 팁입니다. SED o , 제거하기 위해 우리는 이미 sed 😉

안부


16 코멘트, 당신의 것을 남겨주세요

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   mss-devel

    아주 좋은 기여 😉

    1.    KZKG ^ 가아라

      고마워.

      그건 그렇고, 우리는 지금 당신의 이메일을 받았습니다 당신에게 대답하겠습니다 😀

      안부

  2.   이름이없는

    터미널, 서버 및 ssh 연결의 대제사장으로서 오, 대단한 KZKG ^ Gaara, 그리고 묻습니다. 두 원격 시스템간에 ssh 연결을 사용할 수있는 내 무지 수준의 자습서를 어디서 얻을 수 있습니까? 텍스트 파일, pdf, 이미지 및 사운드 (mp3)를 공유하기 위해 서로 다른 네트워크에서….

    ????

    진지하게,이 점에 대해 저를 안내해 주시겠습니까? 직장에 하나, 집에 하나씩 두 대의 컴퓨터가 있고 그들 사이에 ssh 연결이 필요합니다. )
    그리고 내가 틀렸다면 어떤 응용 프로그램을 권장합니까?
    이와 관련하여 기본 자습서는 어디에서 찾을 수 있습니까?

    1.    -스파이커-

      SCP

      scp 사용자 @ machine_address : 경로 사용자 @ machine_address : 경로.

      cp, source-> destination과 동일한 구문입니다.

  3.   f3niX

    당신이 나타나서 길을 잃었습니다.

  4.   호아킨

    좋은 팁!

  5.   LycusHacker이모

    흥미로운 팁… xD

    굵은 텍스트를 돋보이게하는 것을 알고 계십니까?
    내 말은, 사전 인 txt 파일이 있고, 10000 개 이상의 줄이 있고 ":"중단 지점 앞에 특정 텍스트를 강조 표시하고 하나씩 수행하는 것은 너무 많습니다.

    1.    KZKG ^ 가아라

      안녕하세요

      txt 파일은 이름에서 알 수 있듯이 일반 텍스트입니다 ... 일반, 형식 또는 이와 유사한 것이 없습니다. 죄송하지만 요청한 것은 수행 할 수 없다고 생각합니다. 🙁

      안부

      1.    에이커

        실제로 가능하지만 대상 형식을 알아야합니다.
        체육:
        echo $ (echo "로버트 :여보세요. 여기에서 변경"| sed 's / \ ./. \\ e [40; 31m /; s / \ : / : \\ e [40; 35m /')
        대처의 문제입니다.
        사용할 수있는 다른 삭제 방법은 sed '/'$ 1 '/ d'이지만 re를 확인해야합니다.

        1.    LycusHacker이모

          그런 다음 * .odt에 저장을 완료하십시오.

          LibreOffice로 더 쉽게 할 수있는 방법이 없습니까?

  6.   롤로

    줄의 일부를 삭제하고 나머지는 남겨 둘 수 있습니까?

    특정 행에서 단어 앞의 모든 것을 삭제하고 싶다고 가정 해 보겠습니다.

    또는 그 단어 뒤에 오는 모든 것을 삭제하십시오.

    1.    에이커

      예, 정규식을 가져 오는 문제입니다 (필요한 경우 man sed -r, –regexp-extended).
      내가 찾은 것부터
      echo«로버트 : 안녕하세요. 여기에서 변경»| sed 's / 변경 //'
      잘 정의 된 패턴과 함께. (한 문자) 및 * (두 개 이상)
      후:
      echo«로버트 : 안녕하세요. 여기에서 변경»| sed 's / 변경. * //'
      전에:
      echo«로버트 : 안녕하세요. 여기에서 변경»| sed 's /. * 변경 //'
      단어가 나타나는 것이 중요하다면
      echo«로버트 : 안녕하세요. 여기에서 변경»| sed 's / 변경. * / 변경 /'
      또는 더 정교한
      로버트를 포함하는 줄에서 변경 후
      echo -e«Fritz : 안녕하세요. 여기에서 변경하십시오. \ n 로버트 : 안녕하세요. 여기에서 변경»| sed '/Robert/s/Cambio.*//'
      또는 처음에는 두 번째 줄을 꺼내고 나머지는 처리합니다.
      echo -e«Fritz : 안녕하세요. 여기에서 변경하십시오. \ n 로버트 : 안녕하세요. 여기에서 변경 \ n 기타»| sed -e 2d -e 's / 변경. * //'
      echo -e«Fritz : 안녕하세요. 여기에서 변경하십시오. \ n 로버트 : 안녕하세요. 여기에서 변경 \ n 기타»| sed '2d; s / 변경. * //'

      1.    롤로

        감사합니다. 매우 유용합니다.

  7.   MSX

    내가 좋아하는 멋진 기사, SysAdmin이 얼마나 위대한 지!
    sed, awek, perl, grep, tail, head, "Emacs"및 기타 많은 필수 도구가 없다면 우리의 삶은 어떨까요!?

  8.   리스 베스 올라 베스

    감사합니다. 매우 도움이되었습니다.

  9.   페르 니

    안녕하세요, 동일한 명령의 파일에서 1,4, 10 및 XNUMX 줄을 어떻게 삭제할 수 있습니까?