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 로 수행하는 방법을 알고 있습니다.

안부