셸 스 크 립 트 의 sed 사용 에 대한 자세 한 설명

11540 단어 shell
sed 는 좋 은 파일 처리 도구 입 니 다. 그 자체 가 파이프 명령 입 니 다. 주로 행위 단위 로 처리 합 니 다. 데이터 줄 을 교체, 삭제, 추가, 선택 등 특정한 작업 을 할 수 있 습 니 다. 다음은 sed 의 용법 sed 명령 행 형식 을 알 아 보 겠 습 니 다.         sed [- nefri] 'command' 입력 텍스트       
일반 옵션:        -n: 조용 (silent) 모드 를 사용 합 니 다.일반 sed 의 용법 에 서 는 stdIN 에서 온 모든 자료 가 스크린 에 나열 된다.그러나 n 인 자 를 더 하면 sed 특수 처 리 를 거 친 줄 (또는 동작) 만 열 거 됩 니 다.
        -e: 다 중 편집, 여러 스 크 립 트 명령 이 실 행 될 수 있 도록 합 니 다.        -r: 확장 정규 +?() {} |         -f: sed 의 동작 을 파일 에 직접 쓰 고 - f filename 은 filename 내의 sed 동작 을 수행 할 수 있 습 니 다.        -i: 스크린 에서 출력 하 는 것 이 아니 라 읽 은 파일 내용 을 직접 수정 합 니 다.     
명령 옵션:    p   인쇄 일치 줄                               =   파일 줄 번호 보이 기                            a/ 줄 번 호 를 찾 은 후 새 텍스트 정 보 를 추가 합 니 다.                i/ 줄 번 호 를 찾 은 후 새 텍스트 정 보 를 삽입 합 니 다.              d   위치 지정 줄 삭제                              l   8 진 ASCII 코드 와 같은 값 의 제어 문 자 를 표시 합 니 다.        n   다른 텍스트 에서 다음 줄 을 읽 고 다음 줄 에 추가 합 니 다.       g   모드 2 를/pattern n/에 붙 여 넣 기    c/ 위치 지정 텍스트 를 새 텍스트 로 대체 합 니 다.    s   교체 모드 를 사용 하여 해당 모드 를 교체 합 니 다.    r   다른 텍스트 에서 텍스트 읽 기    w   파일 에 텍스트 쓰기    q   첫 번 째 모드 매 칭 완료 후 종료 또는 즉시 종료    y   전송 문자    {}  위치 추적 줄 에서 실행 되 는 명령 그룹
정규 표현 식 메타 문자:
 grep 와 마찬가지 로 sed 도 특수 원 문 자 를 지원 하여 패턴 검색, 교 체 를 진행 합 니 다.다른 것 은 sed 에서 사용 하 는 정규 표현 식 은 평행봉 선 '/' 사이 에 묶 인 모드 입 니 다.
 문자
 기능.
 예시
 ^
 행수 포 지 셔 닝 문자
 /^my/  my 로 시작 하 는 모든 줄 과 일치 합 니 다.
 $
 줄 끝 위치 지정 부호
 /my$/  my 로 끝 나 는 모든 줄 과 일치 합 니 다.
 .
 줄 바 꿈 자 를 제외 한 단일 문자 와 일치 합 니 다.
 /m..y/  알파벳 m, 뒷 굽 두 개의 임의의 문 자 를 포함 하고 알파벳 y 의 줄 과 일치 합 니 다.
 *
 0 개 이상 의 선도 문자 와 일치 합 니 다.
 /my*/  알파벳 m, 뒷 굽 0 개 이상 의 y 자 모 를 포함 하 는 줄 과 일치 합 니 다.
 []
 지정 한 문자 그룹 에 있 는 모든 문자 와 일치 합 니 다.
 /[Mm]y/  My 나 my 를 포함 하 는 줄 과 일치 합 니 다.
 [^]
 지정 한 문자 그룹 에 없 는 모든 문자 와 일치 합 니 다.
 /[^Mm]y/  Y 를 포함 하 는 것 과 일치 하지만 y 이전의 그 문 자 는 M 이나 m 의 줄 이 아 닙 니 다.
 ..
 일치 하 는 문자 저장
 1,20s/youself/\1r/  메타 문자 사이 의 모드 를 표시 하고 태그 1 로 저장 한 후\1 을 사용 하여 참조 할 수 있 습 니 다.최대 9 개의 탭 을 정의 할 수 있 습 니 다. 왼쪽 부터 번 호 를 매 길 수 있 습 니 다. 가장 왼쪽 은 첫 번 째 입 니 다.이 예 에서 1 번 부터 20 번 째 줄 을 처리 합 니 다. you 는 태그 1 로 저장 되 어 있 으 며, youself 를 발견 하면 your 로 대 체 됩 니 다.
 &
 대체 문자열 에서 참조 할 수 있 도록 검색 문자열 저장
 s/my/**&**/  기호 & 대표 문자열 찾기.my 는 * * my * * 로 대 체 됩 니 다.
 \<
 단어 첫머리 포 지 셔 닝 부호
 /\
 \>
 어미 포 지 셔 닝 문자
 /my\>/  my 로 끝 나 는 단 어 를 포함 하 는 줄 과 일치 합 니 다.
 x\{m\}
 연속 m 개 x
 /9\{5\\}/연속 9 개 를 포함 하 는 줄 과 일치 합 니 다.
 x\{m,\}
 최소 m 개 x
 /9\{5,\}/  최소 5 개 9 연속 을 포함 하 는 줄 일치
 x\{m,n\}
 최소 m 개 이지 만 n 개 x 를 초과 하지 않 습 니 다.
 /9\{5,7\}/  연속 5 개 에서 7 개 9 개 를 포함 하 는 줄 일치
sed 교체 의 기본 문법 은:
sed 's/원 문자열/대체 문자열/'
작은 따옴표 안에 s 는 바 꾸 는 것 을 표시 합 니 다. 세 개의 사선 중간 은 바 꾸 는 스타일 입 니 다. 특수 문 자 는 역 사선 '\' 을 사용 하여 전 의 를 해 야 합 니 다. 그러나 작은 따옴표 '' '는 역 사선'\'를 사용 할 수 없습니다. 이 럴 때 명령 중의 작은 따옴표 만 바 꾸 면 됩 니 다. 예 를 들 어:
sed "s/원 문자열 포함 '/대체 문자열 포함'/'//처리 할 문자 포함 작은 따옴표
"명령 에 있 는 세 개의 사선 구분자 가 다른 기호 로 바 뀔 수 있 습 니 다. 이것 은 바 꿀 내용 이 비교적 많은 사선 이 있 는 것 이 편리 합 니 다. s 의 정 의 를 따라 가면 됩 니 다. 예 를 들 어 물음표 로 바 꿀 수 있 습 니까?"
sed 's?원본 문자열?문자열 바 꾸 기? '//사용자 정의 구분자 물음표
마지막 에 g 를 추가 하여 일치 하 는 키 워드 를 바 꿀 수 있 습 니 다. 그렇지 않 으 면 각 줄 의 첫 번 째 만 바 꿀 수 있 습 니 다. 예 를 들 어:
sed 's/원 문자열/문자열 바 꾸 기/'/모든 일치 하 는 키 워드 를 바 꿉 니 다.
위 화살표 "^"는 줄 의 첫머리, 달러 "$"기 호 를 표시 합 니 다. 따옴표 에 줄 의 끝 을 표시 하지만 따옴표 밖 에 서 는 마지막 줄 (마지막 줄) 을 표시 합 니 다. 여기 서 두 번 째 를 범 했 습 니 다. 반나절 동안 검색 해 보 니 어떤 기 호 는 첫 줄 을 표시 하 는 지 반나절 만 에 생각 났 습 니 다. 첫 줄 은 숫자 입 니 다. "1"아, 그러면 줄 의 끝 에 문자열 을 추가 하 는 것 은 줄 의 끝 과 줄 의 첫머리 를 교체 하 는 것 입 니 다. 예 를 들 어:
sed 's/^/추 가 된 머리 &/g'/모든 줄 에 추가
sed 's/$/& 추 가 된 끝/g'/모든 줄 끝 에 추가
sed '2s/원 문자열/문자열 바 꾸 기/g'/두 번 째 줄 바 꾸 기
sed '$s/원 문자열/문자열 바 꾸 기/g'/마지막 줄 바 꾸 기
sed '2, 5s/원 문자열/문자열 바 꾸 기/g'/2 에서 5 줄 바 꾸 기
sed '2, $s/원 문자열/문자열 바 꾸 기/g'/마지막 줄 로 2 바 꾸 기
"스타일 을 바 꾸 면 같은 명령 에서 여러 개 를 실행 할 수 있 습 니 다. 분점 을 사용 합 니 다."구분
sed 's/^/추 가 된 머리 &/g;s/$/& 추 가 된 끝/g '/두 개의 교체 규칙 을 동시에 실행 합 니 다.
sed 처 리 된 출력 은 화면 에 직접 출력 됩 니 다. 출력 을 바 꾸 거나 인자 'i' 를 사용 하여 파일 에서 직접 바 꿀 수 있 습 니 다.
sed - i 's/원 문자열/문자열 바 꾸 기/g' filename//파일 의 모든 일치 항목 바 꾸 기
1.1 p 명령
명령 p 는 모드 공간의 내용 을 표시 하 는 데 사 용 됩 니 다.기본적으로 sed 는 입력 줄 을 화면 에 인쇄 합 니 다. 옵션 - n 은 기본 인쇄 작업 을 취소 하 는 데 사 용 됩 니 다.옵션 - n 과 명령 p 가 동시에 나타 날 때 sed 는 선택 한 내용 을 인쇄 할 수 있 습 니 다.
  sed '/my/p' datafile
# ,sed 。 my,p 。

sed -'/my/p' datafile
# -n sed ,p my 。

 
1.2d 명령
명령 d 는 입력 줄 을 삭제 하 는 데 사 용 됩 니 다.sed 는 먼저 입력 줄 을 파일 에서 모드 공간 으로 복사 한 다음 이 줄 에 sed 명령 을 실행 하고 마지막 으로 모드 공간의 내용 을 화면 에 표시 합 니 다.명령 d 를 보 내 면 현재 모드 공간의 입력 줄 이 삭제 되 고 표시 되 지 않 습 니 다.sed '$d' datafile
# ,

sed '/my/d' datafile
# my ,

 
1.3 s 명령sed 's/^My/You/g' datafile
# g , My, My You。

sed -'1,20s/My$/You/gp' datafile
# , 1 20 My , My You, 。

   sed 's#My#Your#g' datafile
# s 。 , 。
( 、 ), s , 。

 
1.4 e 옵션
- e 는 여러 편집 작업 을 수행 하 는 데 사용 되 는 편집 명령 입 니 다.다음 줄 에서 편집 을 시작 하기 전에 모든 편집 동작 은 모드 버퍼 의 줄 에 적 용 됩 니 다.sed -'1,10d' -'s/My/Your/g' datafile # -e 。 1-3 。 My Your。 ( ), 。
 
1.5 r 명령
r 명령 은 명령 을 읽 는 것 이다.sed 는 이 명령 을 사용 하여 텍스트 파일 의 내용 을 현재 파일 의 특정한 위치 에 추가 합 니 다.sed '/My/r introduce.txt' datafile
# datafile My, introduce.txt 。 My , My introduce.txt 。

 
1.6 w 명령sed -'/hrwang/w me.txt' datafile

 
1.7a\명령
a\명령 은 추가 명령 입 니 다. 현재 줄 (모드 버퍼 의 줄 을 읽 는 것) 뒤에 새 텍스트 를 추가 합 니 다.추 가 된 텍스트 줄 은 sed 명령 아래 다른 줄 에 있 습 니 다.추가 내용 이 한 줄 을 초과 하려 면 모든 줄 이 반사 선 으로 끝나 야 하 며 마지막 줄 은 제외한다.마지막 줄 은 따옴표 와 파일 이름 으로 끝 납 니 다.sed '/^hrwang/a\
>hrwang and mjfan are husband\
>and wife'
 datafile
# datafile hrwang , hrwang and mjfan are husband and wife

 
명령
i\명령 은 현재 줄 앞 에 새 텍스트 를 삽입 합 니 다.
 
1.9 c\명령
sed 이 명령 을 사용 하여 기 존 텍스트 를 새 텍스트 로 수정 합 니 다.
 
명령
sed 는 이 명령 을 사용 하여 입력 파일 의 다음 줄 을 가 져 오고 모드 버퍼 에 읽 습 니 다. 모든 sed 명령 은 다음 줄 에 적 용 됩 니 다.sed '/hrwang/{n;s/My/Your/;}' datafile

주: 여러 명령 을 사용 하거나 주소 범위 내 에 주 소 를 삽입 해 야 한다 면, 명령 을 괄호 로 묶 어야 합 니 다. 줄 마다 명령 만 쓰 거나, 같은 줄 의 여러 명령 을 분점 으로 나 누 어야 합 니 다.
 
1.11 y 명령
이 명령 은 UNIX/Linux 의 tr 명령 과 유사 하 며 문 자 는 1 대 1 로 왼쪽 에서 오른쪽으로 변환 합 니 다.예 를 들 어 y/abc/ABC/는 모든 소문 자의 a 를 A 로, 소문 자의 b 를 B 로, 소문 자의 c 를 C 로 변환 합 니 다.
  sed '1,20y/hrwang12/HRWANG^$/' datafile
# 1 20 , hrwang , 1 ^, 2 $
# y 。 s , 。

 
명령
q 명령 은 sed 프로그램 을 종료 시 키 고 다른 처 리 를 하지 않 습 니 다.sed '/hrwang/{s/hrwang/HRWANG/;q;}' datafile

 
1.13 h 명령 과 g 명령#cat datafile My name is hrwang. Your name is mjfan. hrwang is mjfan's husband. mjfan is hrwang's wife.     sed -'/hrwang/h' -'$G' datafile sed -e '/hrwang/H' -e '$G' datafile # , h , h 。 H hrwnag 。
sed -e '/hrwang/H' -e '$g' datafile sed -e '/hrwang/H' -e '$G' datafile # , g , 。 G 。 。

좋은 웹페이지 즐겨찾기