목차
Linux sed 명령은 스크립트를 사용하여 텍스트 파일을 한 줄씩 처리합니다. 스크립트 처리에 자주 사용되는 명령입니다. awk 및 grep과 함께 Linux의 Three Musketeers라고합니다. 다음은 예제와 함께 설명합니다.
1. 문법
sed [옵션] [스크립트 명령] [파일] ...
1.1 공통 옵션
-e 스크립트, --expression = script : 옵션에 지정된 스크립트로 입력 내용을 처리합니다.
-f script-file, --file = script-file : 옵션에 지정된 스크립트 파일로 입력 내용을 처리합니다.
1.2 공통 명령
a : 새 콘텐츠, 지정된 줄에 콘텐츠 텍스트 추가;
c : 내용을 교체하고 텍스트를 사용하여 지정된 줄의 내용을 교체합니다.
d : 내용 삭제, 지정된 줄 삭제;
i : 내용을 삽입하고 지정된 줄에 텍스트를 삽입합니다.
s : 컨텐츠 교체, 지정된 컨텐츠를 교체 할 수 있습니다.
예 : / etc / passwd 파일의 처음 15 줄
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
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
1.3 명령 원리
Sed는 입력 데이터를 한 행씩 처리하여 매번 한 행씩 처리하며 다음 세 단계로 나눌 수 있습니다.
1. 현재 처리 된 라인의 복사본을 임시 버퍼 ( "모드 공간"이라고 함)에 저장합니다.
2. sed 명령을 통해 현재 버퍼의 데이터를 처리합니다.
3. 데이터가 처리 된 후 기본적으로 데이터가 터미널로 출력되고 다음 라인이 처리되고 모든 데이터가 처리됩니다.
소스 데이터는 기본적으로 수정되지 않습니다.
2. 예
2.1 새로운 콘텐츠 --- Command a
sed '4a 추가 텍스트'passwd
[root@localhost ~]# sed '4a addition some text' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
addition some text
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
[root@localhost ~]#
위의 예에서 4a는 네 번째 줄 뒤에 콘텐츠를 삽입하는 것을 의미하고, 다음 텍스트는 입력 콘텐츠, passwd는 입력 파일입니다.
2.2 내용 바꾸기 --- 명령 c
sed '2c 추가 텍스트'passwd
[root@localhost ~]# sed '2c addition some text' passwd
root:x:0:0:root:/root:/bin/bash
addition some text
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
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
[root@localhost ~]#
위의 예에서 2c는 두 번째 줄의 내용을 바꾸는 것을 의미하고, 다음 내용은 바꿀 내용입니다.
2.3 내용 삭제 --- 지정된 줄 삭제
sed '2d'passwd
[root@localhost ~]# sed '2d' passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
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
[root@localhost ~]#
sed '2,5d'passwd
[root@localhost ~]# sed '2,5d' passwd
root:x:0:0:root:/root:/bin/bash
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
[root@localhost ~]#
sed '/ ^ bin / d'passwd
[root@localhost ~]# sed '/^bin/d' passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
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
[root@localhost ~]#
위의 세 가지 예에서 행을 지정하거나 간격을 지정하거나 삭제할 특정 콘텐츠를 지정하여 삭제할 수 있습니다.
2.4 내용 삽입-명령 i
sed '1i 추가 텍스트'passwd
[root@localhost ~]# sed '1i addition some text' passwd
addition some text
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
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
[root@localhost ~]#
삽입 된 내용이 새로 추가 된 내용과 다릅니다. 삽입은 지정된 행 앞에 삽입되고 새로 추가 된 내용은 지정된 행 뒤에 삽입됩니다.
2.5 내용 바꾸기 --- 명령
sed 's / root / ROOT / g'passwd
[root@localhost ~]# sed 's/root/ROOT/g' passwd
ROOT:x:0:0:ROOT:/ROOT:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
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
[root@localhost ~]#
위의 예에서 지정된 내용은 vim의 대체와 마찬가지로 명령으로 대체 될 수 있습니다.
셋, 요약
위는 sed의 일반적인 사용법을 예제 형식으로 나열한 것입니다. 점점 더 심층적 인 내용이 있으며 시간이있을 때 소개하겠습니다.