Shell 텍스트 처리 삼 총사 sed 사용

sed 는 stream editor 의 줄 임 말,흐름 편집기 로 표준 출력 이나 파일 을 처리 하 는 데 사 용 됩 니 다.
문법:

stdout | sed [option] "pattern command"
sed [option] "pattern command" file1
상용 옵션(option)

# -n           ,      
# p      
➜ sed '/hello/p' helloWorld.sh
#!/bin/bash

HELLO bash
echo "hello world"
echo "hello world"
➜ sed -n '/hello/p' helloWorld.sh
echo "hello world"

# -e         
➜ sed -n -e '/hello/p' -e '/HELLO/p' helloWorld.sh
HELLO bash
echo "hello world"

# -f              ,         
➜ cat edit.sed
/hello/p
➜ sed -n -f edit.sed hello.md

# -E (  -r)         
➜ sed -n -E '/hello|HELLO/p' helloWorld.sh
HELLO bash
echo "hello world"

# -i          
# s      
#      helloWorld.sh        hello    hello123
sed -n -i 's/hello/hello123/g' helloWorld.sh

일치 모드(pattern)
일치 모드
설명 하 다.
10command
열 째 줄
10,20command
10 번 부터 20 번 째 줄.
10,+5command
10 번 부터 16 번 째 줄.
/pattern1/command
pattern 1 에 대응 하 는 줄 일치
/pattern1/,/pattern2/command
pattern 1 에 대응 하 는 줄 부터 pattern 2 줄 까지
10,/pattern1/command
10 줄 부터 pattern 1 줄 까지
/pattern1/,10command
pattern 1 에 대응 하 는 줄 부터 10 번 째 줄 까지
상용 편집 명령(command)
조회 하 다.
  • p 일치 하 는 내용 인쇄
  • 증가시키다
  • a string 행 후 추가
  • i string 행 전 추가
  • r file 외부 파일 에서 읽 고 일치 하 는 줄 뒤에 추가
  • w new file 은 일치 하 는 줄 을 외부 파일 에 기록 합 니 다
  • 삭제
  • d 삭제
  • 수정 하 다.
  • s/old/new 줄 의 첫 번 째 old 는 new
  • 입 니 다.
  • s/old/new/g 줄 의 모든 old 를 new
  • 로 교체 합 니 다.
  • s/old/new/2g 두 번 째 줄 부터 파일 끝 에 있 는 모든 old 를 new
  • 로 교체 합 니 다.
  • s/old/new/ig 줄 의 모든 old 를 new 로 바 꾸 고 대소 문자 무시
  • 예시:
    
    #     sys   、   /sbin/nologin     
    ➜ sed -i '/^sys.*\/sbin\/nologin$/d' passwd_bak
    
    #      、  
    sed -i '/[:blank:]*#/d;/^$/d' passwd_bak
    
    #      vagrant     ,       
    ➜ sed -i '/^vagrant/a          ' passwd_bak
    
    #      root     root123
    ➜ sed -i 's/root/root123/ig' passwd_bak
    
    #      sys   、  nologin     ,     _666
    #    &             
    ➜ sed -i 's/^sys.*nologin$/&_666/g' passwd_bak
    
    #      sys   、  nologin_666        
    #   SYS_   、  _777   ,   \1                 
    ➜ sed -i 's/^sys\(.*\)nologin_666$/SYS_\1_777/g' passwd_bak
    
    #   1 ~ 10      sys    SYS
    ➜ sed -i '1,10s/sys/SYS/ig' passwd_bak
    
    #    my.cnf     mysqld        
    # sed     [mysqld]      [.*]     
    # grep -v     、    [.*]  
    # wc -l        
    sed -n "/^\[mysqld\]$/,/^\[.*\]$/p" /etc/my.cnf | grep -Ev '^$|[#;]|^\[.*' | wc -l
    
    
    메모:일치 하 는 모드 에 변수 가 존재 한다 면 sed-i"s/$OLD 와 같은 작은 따옴표 를 사용 하 는 것 을 권장 합 니 다.STR/$NEW_STR/g" passwd_bak
    여기 서 Shell 텍스트 처리 삼 총사 의 sed 사용 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Shell 텍스트 처리 sed 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부탁드립니다!

    좋은 웹페이지 즐겨찾기