[셸] 셸 스 크 립 트 실전 - sed 스 트림 편집기
6765 단어 #순차 점진 적 운영 - 스 크 립 트 편sed
sed 는 Linux 의 다음 기능 이 강 한 비 상호작용 스 트림 텍스트 편집기 로 텍스트 파일 을 증가, 삭제, 수정, 검사 등 작업 을 할 수 있 습 니 다. 줄, 필드, 정규 에 따라 텍스트 내용 과 일치 하 는 것 을 지원 하고 유연성 이 있 으 며 편리 하 며 특히 큰 파일 의 편집 에 적합 합 니 다.
sed 는 정규 표현 식 을 지원 합 니 다. 정규 표현 식 을 확장 하려 면 - r 인 자 를 추가 해 야 합 니 다.
sed 의 실행 과정
sed 를 호출 하 는 방법 은 두 가지 가 있 습 니 다.
options:
매개 변수
속뜻
-a
현재 줄 아래 에 파일 삽입
-n
다음 입력 줄 을 읽 고 첫 번 째 명령 대신 다음 명령 으로 새 줄 을 처리 합 니 다.
-e
여러 sed 명령 실행
-f
스 크 립 트 실행
-i
파일 내용 편집 * *
-i.bak
편집 과 동시에. bak 백업 만 들 기
-r
확 장 된 정규 표현 식 사용 하기
명령 하 다.
매개 변수
속뜻
i
현재 줄 에 파일 삽입
c
선택 한 줄 을 새 지정 한 텍스트 로 변경 합 니 다.
p
인쇄 * *
d
삭제 * * *
r/R
파일/줄 읽 기
w
따로 저금 하 다
s
찾다
y
바꾸다
h
템 플 릿 블록의 내용 을 메모리 의 버퍼 에 복사 합 니 다.
H
메모리 의 버퍼 에 모듈 의 내용 을 추가 합 니 다.
g
메모리 버퍼 의 내용 을 가 져 오고 현재 템 플 릿 블록의 텍스트 를 대체 합 니 다.
G
메모리 버퍼 의 내용 을 가 져 와 현재 템 플 릿 블록 텍스트 뒤에 추가 합 니 다.
D
이전 내용 삭제
P
이전 내용 인쇄
태그 바 꾸 기:
매개 변수
속뜻
숫자.
새 텍스트 가 몇 번 째 모드 와 일치 하 는 곳 을 바 꿀 것 임 을 표시 합 니 다.
g
새 텍스트 가 일치 하 는 모든 텍스트 를 바 꿀 것 임 을 표시 합 니 다.
\1
하위 문자열 일치 태그 입 니 다. 앞에서 검색 하면 메타 문자 집합 (...) 을 사용 할 수 있 습 니 다.
&
다른 문 자 를 바 꾸 기 위해 서 검색 한 문 자 를 저장 합 니 다.
일치 문자 집합
매개 변수
속뜻
^
일치 하 는 줄 을 시작 합 니 다. 예 를 들 어:/^ sed/sed 로 시작 하 는 모든 줄 과 일치 합 니 다.
$
일치 하 는 줄 이 끝 났 습 니 다. 예 를 들 어:/sed $/sed 로 끝 나 는 모든 줄 과 일치 합 니 다.
.
/s. d/s 와 일치 한 다음 임의의 문 자 를 연결 합 니 다. 마지막 으로 d 입 니 다.
*
0 개 이상 의 문자 와 일치 합 니 다. 예 를 들 어/* sed/모든 템 플 릿 과 일치 하 는 것 은 하나 이상 의 빈 칸 뒤에 sed 줄 을 따라 갑 니 다.
실전 사례
1. passwd 의 루트 를 zmgaosh 로 바 꿉 니 다.
[root@zmedu-17 ~]# cp /etc/passwd passwd
[root@zmedu-17 ~]# sed 's/root/zmgaosh/g' passwd
zmgaosh:x:0:0:zmgaosh:/zmgaosh:/bin/bash
설명: 's/root/zmgaosh/' 한 줄 의 첫 번 째 루트 만 바 꿉 니 다.
s/root/zmgaosh/g 이 줄 의 모든 루트 를 교체 합 니 다.
2. 줄 찾기 로 바 꾸 기
[root@zmedu-17 ~]# sed '2s/bin/zmgaosh/' passwd |head -n 2
root:x:0:0:root:/root:/bin/bash
zmgaosh:x:1:1:bin:/bin:/sbin/nologin
2) 여러 줄 바 꾸 기:
[root@zmedu-17 ~]# sed '2,5s/bin/zmgaosh/' passwd |head -n 7
root:x:0:0:root:/root:/bin/bash
zmgaosh:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/szmgaosh:/sbin/nologin
adm:x:3:4:adm:/var/adm:/szmgaosh/nologin
lp:x:4:7:lp:/var/spool/lpd:/szmgaosh/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
3) 2 - 4 줄 삭제
[root@zmedu-17 ~]# sed '2,4d' passwd |head -n 5
root:x:0:0:root:/root:/bin/bash
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
4) 줄 추가
[root@zmedu- 17 ~]\# echo "hello zmgaosh"| sed "i\\나 는 앞 에 있어"나 는 앞 에 있어 hello zmgaosh
설명:
[root@zmedu-17 ~]# echo "hello zmgaosh" |sed 'a\ '
hello zmgaosh
5) 문서 마지막 에 내용 추가
[root@zmedu-17 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@zmedu-17 ~]# sed '$a\192.168.1.17 zmedu-17' /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.17 zmedu-17
주의해 야 할 것 은 이렇게 추가 하면 파일 내용 이 바 뀌 지 않 았 다 는 것 이다.
6) 파일 의 두 번 째 줄 뒤에 내용 추가
[root@zmedu-17 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@zmedu-17 ~]# sed '2a\192.168.1.16 zmedu-16' /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.16 zmedu-16
7) 원본 파일 수정 - i
[root@zmedu-17 ~]# head -1 passwd
root:x:0:0:root:/root:/bin/bash
[root@zmedu-17 ~]# sed -i 's/root/zmgaosh/' passwd |head -1 passwd
zmgaosh:x:0:0:root:/root:/bin/bash
총결산
모든 공구 꾸러미 에는 대량의 매개 변수 가 있 는데 기억 할 수 있 는 것 은 기억 하고 기억 하지 못 하 는 것 은 수첩 을 찾 는 것 이다. 물론 연습 을 많이 하 는 목적 은 바로 기억 하 는 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법원래 Turobolinks란? Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고, 이동한 페이지를 Ajax에서 가져옵니다. 그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.