셸 프로 그래 밍 의 정규 표현 식 (sed)
sed (Stream EDitor) 는 강력 하고 간단 한 텍스트 해석 변환 도구 로 텍스트 를 읽 을 수 있 으 며 지정 한 조건 에 따라 텍스트 내용 을 편집 (삭제, 교체, 추가, 이동 등) 하고 마지막 으로 모든 줄 을 출력 하거나 출력 만 처리 하 는 일부 줄 입 니 다.sed 도 상호작용 이 없 는 상황 에서 상당히 복잡 한 텍스트 처리 작업 을 실현 할 수 있 고 Shell 스 크 립 트 에 널리 응용 되 어 각종 자동화 처리 임 무 를 완성 할 수 있 습 니 다.sed 의 작업 절 차 는 주로 읽 기, 실행, 표시 세 가지 과정 을 포함한다.
sed 명령
일반적으로 sed 명령 을 호출 하 는 데 는 두 가지 형식 이 있 는데, 아래 와 같다.그 중에서 '매개 변수' 는 작업 대상 파일 을 말 하 는데 여러 작업 대상 이 존재 할 때 사용 하고 파일 간 에 쉼표 를 사용 합 니 다. '구분 합 니 다.스 크 립 트 파일 은 스 크 립 트 파일 을 표시 합 니 다. '- f' 옵션 으로 지정 해 야 합 니 다. 스 크 립 트 파일 이 대상 파일 앞 에 나타 날 때 지정 한 스 크 립 트 파일 을 통 해 입력 한 대상 파일 을 처리 하 는 것 을 표시 합 니 다.
3. 용법 사례
test. txt 파일 을 예 로 들 어 보 여 줍 니 다.
[root@server ~]# cat test.txt
he was short and fat.
He was wearing a blue polo shirt with black pants.
The home of Football on BBC Sport online.
the tongue is boneless but it breaks bones.12!
google is the best tools for search keyword.
The year ahead will test our political establishment to the limit.
PI=3.141592653589793238462643383249901429
a wood cross!
Actions speak louder than words
#woood #
#woooooood #
AxyzxyzxyzxyzC
I bet this place is really spooky late at night!
Misfortunes never come alone/single.
I shouldn't have lett so tast.
3.1: 조건 에 맞 는 텍스트 출력
#输出第三行
[root@server ~]# sed -n '3p' test.txt
The home of Football on BBC Sport online.
#输出3-5行
[root@server ~]# sed -n '3,5p' test.txt
The home of Football on BBC Sport online.
the tongue is boneless but it breaks bones.12!
google is the best tools for search keyword.
#输出所有奇数行,n表示读入下一行
[root@server ~]# sed -n 'p;n' test.txt
he was short and fat.
The home of Football on BBC Sport online.
google is the best tools for search keyword.
PI=3.141592653589793238462643383249901429
Actions speak louder than words
#woood #
AxyzxyzxyzxyzC
Misfortunes never come alone/single.
#输出所有偶数行,n表示读入下一行
[root@server ~]# sed -n 'n;p' test.txt
He was wearing a blue polo shirt with black pants.
the tongue is boneless but it breaks bones.12!
The year ahead will test our political establishment to the limit.
a wood cross!
#woooooood #
I bet this place is really spooky late at night!
I shouldn't have lett so tast.
#输出第 1~5 行之间的奇数行(第 1、3、5 行)
[root@server ~]# sed -n '1,5{p;n}' test.txt
he was short and fat.
The home of Football on BBC Sport online.
google is the best tools for search keyword.
#输出第 10 行至文件尾之间的偶数行
[root@server ~]# sed -n '10,${n;p}' test.txt
#woood #
AxyzxyzxyzxyzC
Misfortunes never come alone/single.
'sed - n' 10, ${n; p} 'test. txt' 명령 을 실행 할 때 읽 은 첫 번 째 줄 은 파일 의 10 번 째 줄 이 고 읽 은 두 번 째 줄 은 파일 의 11 번 째 줄 입 니 다. 따라서 출력 된 짝수 줄 은 파일 의 11 번 째 줄, 13 번 째 줄 입 니 다. 파일 이 끝 날 때 까지 빈 줄 을 포함 합 니 다.
sed 명령 이 정규 표현 식 과 결합 할 때 형식 이 약간 다 르 고 정규 표현 식 은 '/' 로 둘러싸 입 니 다.
#输出包含the 的行
[root@server ~]# sed -n '/the/p' test.txt
the tongue is boneless but it breaks bones.12!
google is the best tools for search keyword.
The year ahead will test our political establishment to the limit.
#输出从第 4 行至第一个包含 the 的行
[root@server ~]# sed -n '4,/the/p' test.txt
the tongue is boneless but it breaks bones.12!
google is the best tools for search keyword.
#输出包含the 的行所在的行号,等号(=)用来输出行号
[root@server ~]# sed -n '/the/=' test.txt
4
5
6
#输出以PI 开头的行
[root@server ~]# sed -n '/^PI/P' test.txt
PI=3.141592653589793238462643383249901429
#输出以数字结尾的行
[root@server ~]# sed -n '/[0-9]$/P' test.txt
PI=3.141592653589793238462643383249901429
#输出包含单词wood 的行,\代表单词边界
[root@server ~]# sed -n '/\/P' test.txt
a wood cross!
3.2: 조건 에 맞 는 텍스트 삭제 (d)
#nl命令用于计算文件的行数
[root@server ~]# nl test.txt | sed '3d' #删除第三行
[root@server ~]# nl test.txt | sed '3,5d' #删除第 3~5 行
[root@server ~]# nl test.txt |sed '/cross/d' #删除包含cross的行
[root@server ~]# nl test.txt |sed '/cross/!d' #删除不包含cross的行
[root@server ~]# sed '/^[a-z]/d' test.txt #删除以小写字母开头的行
[root@server ~]# sed '/\.$/d' test.txt #删除以"."结尾的行
[root@server ~]# sed '/^$/d' test.txt #删除所有空行
[root@server ~]# sed -e '/^$/{n;/^$/d}' test.txt #删 除 重 复 的 空行 , 即 连 续 的 空 行 只 保 留 一 个
3.3: 조건 에 맞 는 텍스트 교체
sed 명령 을 사용 하여 교체 작업 을 할 때 s (문자열 교체), c (전체 줄/전체 블록 교체), y (문자 변환) 명령 옵션 을 사용 해 야 합 니 다. 일반적인 용법 은 다음 과 같 습 니 다.
3.4: 조건 에 맞 는 텍스트 이전
sed 스 크 립 트 를 사용 하여 여러 편집 명령 을 파일 에 저장 합 니 다 (줄 마다 편집 명령). "- f"옵션 을 통 해 호출 합 니 다.예 를 들 어 다음 명령 을 집행 하면 1 ~ 5 줄 의 내용 을 17 줄 로 옮 길 수 있다.sed ‘1,5{H;d};17G 'test. txt\# 1 ~ 5 번 째 줄 의 내용 을 17 번 째 줄 로 옮 긴 후 스 크 립 트 파일 방식 을 변경 할 수 있 습 니 다.
[root@localhost ~]# vi opt.list
1,5H
1,5d
17G
[root@localhost ~]# sed -f opt.list test.txt
The year ahead will test our political establishment to the limit.
PI=3.141592653589793238462643383249901429
a wood cross!
Actions speak louder than words
#woood # #woooooood # AxyzxyzxyzxyzC
I bet this place is really spooky late at night! Misfortunes never come alone/single.
I shouldn't have lett so tast.
he was short and fat.
He was wearing a blue polo shirt with black pants. The home of Football on BBC Sport online.
the tongue is boneless but it breaks bones.12! google is the best tools for search keyword.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
셸 스 크 립 트 (다 중 스 레 드 대량 생 성 사용자)예 를 들 어 백업 데이터 베 이 스 는 100 개의 라 이브 러 리 가 있 고 정상 적 인 백업 효율 이 매우 낮 습 니 다.다 중 스 레 드 가 있 으 면 백업 하 는 데 10 시간 이 걸 릴 수도 있 었 는데 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.