셸 프로 그래 밍 의 정규 표현 식 (sed)

셸 프로 그래 밍 의 정규 표현 식 (sed)
  • 1: sed 개술
  • 2: sed 명령 의 흔 한 용법
  • 3. 용법 사례
  • 3.1: 조건 에 맞 는 텍스트 출력
  • 3.2: 조건 에 맞 는 텍스트 삭제 (d)
  • 3.3: 조건 에 맞 는 텍스트 교체
  • 3.4: 조건 에 맞 는 텍스트 이전
  • 3.5: 스 크 립 트 로 파일 편집
  • sed 개요
    sed (Stream EDitor) 는 강력 하고 간단 한 텍스트 해석 변환 도구 로 텍스트 를 읽 을 수 있 으 며 지정 한 조건 에 따라 텍스트 내용 을 편집 (삭제, 교체, 추가, 이동 등) 하고 마지막 으로 모든 줄 을 출력 하거나 출력 만 처리 하 는 일부 줄 입 니 다.sed 도 상호작용 이 없 는 상황 에서 상당히 복잡 한 텍스트 처리 작업 을 실현 할 수 있 고 Shell 스 크 립 트 에 널리 응용 되 어 각종 자동화 처리 임 무 를 완성 할 수 있 습 니 다.sed 의 작업 절 차 는 주로 읽 기, 실행, 표시 세 가지 과정 을 포함한다.
  • 읽 기: sed 는 입력 흐름 (파일, 파이프, 표준 입력) 에서 한 줄 의 내용 을 읽 고 임시 버퍼 에 저장 합 니 다 (모드 공간, pattern space 라 고도 함)
  • 실행: 기본적으로 모든 sed 명령 은 모드 공간 에서 순서대로 실 행 됩 니 다. 줄 의 주 소 를 지정 하지 않 으 면 sed 명령 은 모든 줄 에서 순서대로 실 행 됩 니 다
  • 수 정 된 내용 을 출력 흐름 으로 보 냅 니 다.데 이 터 를 보 낸 후 모드 공간 이 비 워 집 니 다
  • 메모: 기본 적 인 상황 에서 모든 sed 명령 은 패턴 공간 에서 실 행 됩 니 다. 따라서 입력 한 파일 은 출력 을 재 설정 하지 않 는 한 변 하지 않 습 니 다.
    sed 명령
    일반적으로 sed 명령 을 호출 하 는 데 는 두 가지 형식 이 있 는데, 아래 와 같다.그 중에서 '매개 변수' 는 작업 대상 파일 을 말 하 는데 여러 작업 대상 이 존재 할 때 사용 하고 파일 간 에 쉼표 를 사용 합 니 다. '구분 합 니 다.스 크 립 트 파일 은 스 크 립 트 파일 을 표시 합 니 다. '- f' 옵션 으로 지정 해 야 합 니 다. 스 크 립 트 파일 이 대상 파일 앞 에 나타 날 때 지정 한 스 크 립 트 파일 을 통 해 입력 한 대상 파일 을 처리 하 는 것 을 표시 합 니 다.
  • sed [옵션] '조작' 인자
  • sed [옵션] - f scriptfile 인자
  • 흔히 볼 수 있 는 sed 명령 옵션 은 다음 과 같은 몇 가 지 를 포함 합 니 다.
  • - e 또는 – expression =: 여러 스 크 립 트 명령 이 실 행 될 수 있 도록 합 니 다
  • - f 또는 – file =: 입력 한 텍스트 파일 을 지정 한 스 크 립 트 파일 로 처리 합 니 다
  • - n, – quiet 또는 silent: 처리 후의 결과 만 표시 합 니 다
  • - i: 텍스트 파일 직접 편집
  • - r 스 크 립 트 에서 확장 정규 표현 식 사용
  • sed 명령 은 포 지 셔 닝 텍스트 줄 과 sed 편집 명령 두 부분 으로 구성 되 어 sed 편집 명령 으로 포 지 셔 닝 텍스트 를 조작 합 니 다. sed 포 지 셔 닝 방식 은 주로 두 가지 가 있 습 니 다.
  • 1. 줄 번호, 한 줄 또는 여러 줄 범위 지정
  • 2. 정규 표현 식 사용
  • ed 명령 으로 텍스트 를 찾 는 방법:
  • x x 지정 줄 번호
  • x, y 지정 x - y 행 범위
  • /pattern/포 함 된 줄 보기
  • /pattern/pattern/일치 하 는 줄 두 개 보기
  • /pattern/, x 는 paeertn 에서 x 행 사이 의 줄 을 포함 합 니 다
  • x,y! x, y 줄 포함 하지 않 음
  • sed 편집 방법 은 주로 첨삭 과 수정 인쇄 이다.
  • p 인쇄 는 줄 을 동시에 지정 하면 지정 한 줄 을 인쇄 하 는 것 을 나타 낸다.줄 을 지정 하지 않 으 면 모든 내용 을 인쇄 하 는 것 을 표시 합 니 다.인쇄 되 지 않 은 문자 가 있 으 면 ASCII 코드 로 출력 합 니 다.보통 "- n"옵션 과 함께 사용 합 니 다
  • = 파일 줄 번호 인쇄
  • a\\증가, 현재 줄 아래 에 지정 한 줄 추가
  • i\삽입, 선택 한 줄 에 지정 한 내용 삽입
  • d 선택 한 줄 삭제
  • c\\를 바 꾸 고 선택 한 줄 을 지정 한 내용 으로 바 꿉 니 다
  • s 교체, 지정 문자 교체
  • r 다른 텍스트 에서 텍스트 읽 기
  • w 파일 로 저장
  • y 문자 변환
  • H 를 클립보드 로 복사
  • g 클립보드 의 데 이 터 를 지정 한 줄 로 덮어 쓰기
  • G 는 클립보드 의 데 이 터 를 지 정 된 줄
  • 에 추가 합 니 다.
    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 (문자 변환) 명령 옵션 을 사용 해 야 합 니 다. 일반적인 용법 은 다음 과 같 습 니 다.
  • sed 's/the/THE/' test. txt//각 줄 의 첫 번 째 the 를 THE
  • 로 교체 합 니 다.
  • sed 's/l/L/2' test. txt//각 줄 의 두 번 째 l 을 L
  • 로 교체 합 니 다.
  • sed 's/the/THE/g' test. txt//파일 에 있 는 모든 the 를 THE
  • 로 바 꿉 니 다.
  • sed 's/o/g' test. txt//파일 에 있 는 모든 o 를 삭제 (빈 문자열 로 대체)
  • sed 's/^/\#/' test. txt//줄 마다\# 번 호 를 삽입 합 니 다
  • sed '/the/s/^/\#/' test. txt//the 를 포함 하 는 줄 마다 삽입\# 번호
  • sed 's/$/EOF/' test. txt//줄 끝 에 문자열 EOF 삽입
  • sed '3, 5s/the/THE/g' test. txt//3 ~ 5 줄 의 모든 the 를 THE
  • 로 교체
  • sed '/the/s/o/o/g' test. txt//the 를 포함 하 는 모든 줄 의 o 를 O
  • 로 교체 합 니 다.
    3.4: 조건 에 맞 는 텍스트 이전
  • sed ‘/the/{H;d};$G 'test. txt//the 를 포함 하 는 줄 을 파일 끝으로 옮 깁 니 다. {;} 여러 작업 에 사용 합 니 다
  • sed ‘1,5{H;d};17G 'test. txt//1 ~ 5 번 째 줄 의 내용 을 17 번 째 줄 로 옮 긴 후
  • sed '/the/w out. file' test. txt//the 를 포함 하 는 줄 을 파일 out. file
  • 로 저장 합 니 다.
  • sed '/the/r/etc/hostname' test. txt//파일/etc/hostname 의 내용 을 the 를 포함 하 는 줄 에 추가 한 후
  • sed '3a New' test. txt//세 번 째 줄 뒤에 새 줄 을 삽입 합 니 다. 내용 은 New
  • 입 니 다.
  • sed '/the/aNew' test. txt//the 를 포함 하 는 줄 마다 새 줄 을 삽입 합 니 다. 내용 은 New
  • 입 니 다.
  • sed '3aNew1New 2' test. txt//세 번 째 줄 뒤에 여러 줄 의 내용 을 삽입 하고 중간 표시 줄 바 꾸 기
  • 3.5: 스 크 립 트 로 파일 편집
    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.
    

    좋은 웹페이지 즐겨찾기