쉘 프로그래밍의 세 검객 중 하나로서 sed의 중요성은 자명합니다. sed는 한 번에 한 줄씩 처리하고, 처리 후 다음 줄을 처리하는 스트림 프로그래머입니다. 정규식을 지원하며 매우 강력합니다. 그러나 sed는 일반 명령보다 더 복잡하고 많은 옵션이 있습니다. 다양한 예시를 통해 이 강력한 sed 명령의 역할을 살펴보겠습니다!
구문 형식: sed [옵션] [동작]
일반적으로 사용되는 옵션은 다음과 같습니다.
-n: sed는 기본적으로 모든 표준 입력 내용을 출력하지만, 이 옵션을 추가한 후에는 sed에서 처리한 줄만 출력합니다. 표시됩니다.
-e: 동일한 줄에서 여러 작업을 수행할 수 있도록 허용합니다.
-f: 파일에서 작업을 읽습니다.
-i: 파일을 화면에 입력하는 대신 직접 수정합니다(위험).
작업에 매개변수가 너무 많습니다. 목록은 다음과 같습니다.
a: 일치하는 줄 아래에 줄을 추가합니다.
c: 새 콘텐츠로 일치하는 줄을 수정합니다.
d: 일치하는 줄 삭제
i: 일치하는 줄 앞에 내용 추가
p: 인쇄
s: 일치하는 줄의 내용 바꾸기
예 1: 5번째 줄 인쇄 /etc/passwd 파일 -10줄
# sed -n '5,10p' /etc/passwd lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin
예 2: /etc/passwd 파일의 2행, 2~10행
# cat -n /etc/passwd | sed '2d' | sed '5,10d'
위의 방법 외에도 다음을 사용할 수 있습니다. -e 옵션을 사용하여 완료
# cat -n /etc/passwd | sed -e '2d' -e '5,10d'
예 3: 서버 IP 주소 가져오기
이 사례는 매우 좋습니다. 자세히 살펴보시기 바랍니다.
# ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.26.9.143 netmask 255.255.240.0 broadcast 172.26.15.255 ether 00:16:3e:0a:01:ad txqueuelen 1000 (Ethernet) ……
우리에게 필요한 것은 172.26.9.143입니다.
첫 번째 단계는 처리하려는 라인을 가져오는 것입니다
# ifconfig eth0 | sed -n '/.*inet/p' inet 172.26.9.143 netmask 255.255.240.0 broadcast 172.26.15.255
두 번째 단계는 불필요한 정보를 공백 문자로 바꾸는 것입니다
# ifconfig eth0 | sed -n '/.*inet/p' | sed 's/.*inet\s\+//g' 172.26.9.143 netmask 255.255.240.0 broadcast 172.26.15.255
그런 다음 IP 주소 뒤의 공백을 모두 공백으로 바꿉니다
# ifconfig eth0 | sed -n '/.*inet/p' | sed 's/.*inet\s\+//g' | sed 's/\s\+.*//g' 172.26.9.143
다음에 대해 이야기해 보겠습니다. 위의 예에 대해 먼저 첫 번째 단계에서는 -n 및 p를 사용하여 원하는 행을 가져옵니다. 그런 다음 불필요한 정보를 필터링합니다. 정규식에서 s+는 최소한 하나의 공백과 일치한다는 의미이지만 여기서는 더하기 기호 앞에 이스케이프 문자를 사용해야 합니다.
예시 4
마지막 예로 어제 제가 겪은 실제 사례를 들려드리겠습니다. 요구 사항은 다음과 같습니다. 텍스트로 URL 주소를 가져오지만 이전 http://는 필요하지 않습니다. 텍스트 내용의 일부는 다음과 같습니다.
<td width=820> <a href=http://beijing.hellozx.com onclick="co('beijing')"><font color="red">北京</font></a> <a href=http://shanghai.hellozx.com onclick="co('shanghai')"><font color="red">上海</font></a> <a href=http://tianjin.hellozx.com onclick="co('tianjin')"><font color="red">天津</font></a> <a href=http://chongqing.hellozx.com onclick="co('chongqing')"><font color="red">重庆</font></a></td></tr> <tr><td width=80 height=30 align=right> <b><font style="font-size:14px;">山东</font>:</b> </td><td width=820> <a href="http://jinan.hellozx.com" onclick="co('jinan')"><font color=red style="font-size:14px;">济南</font></a> <a href="http://qingdao.hellozx.com" onclick="co('qingdao')"><font color=red style="font-size:14px;">青岛</font></a>
여러 단계를 거쳐 이 요구 사항을 완료해 보겠습니다. 먼저 URL 주소가 포함되지 않은 모든 줄을 필터링합니다.
# sed -n '/http:/p' a.txt
그런 다음 불필요한 정보를 모두 공백 문자로 바꿉니다. 먼저 http://와 그 앞의 모든 문자
sed -n '/http:/p' a.txt | sed 's/.*http:\/\///g'
를 삭제한 다음 큰따옴표와 그 뒤의 문자를 모두 삭제하세요
# sed -n '/http:/p' a.txt | sed 's/.*http:\/\///g' | sed 's/".*//g'
이제 화면 출력은 다음과 같습니다
haikou.hellozx.com sanya.hellozx.com kunming .hellozx.com dali.hellozx.com xining.hellozx.com yinchuan.hellozx.com wulumuqi.hellozx.com ......
위 내용은 한 기사에서 쉘 프로그래밍의 세 검객 중 한 사람의 sed 명령을 이해하십시오.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!