셸 스 크 립 트 의 sed 사용 에 대한 자세 한 설명
11540 단어 shell
일반 옵션: -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 -n '/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 -n '1,20s/My$/You/gp' datafile
# , 1 20 My , My You, 。
sed 's#My#Your#g' datafile
# s 。 , 。 ( 、 ), s , 。
1.4 e 옵션
- e 는 여러 편집 작업 을 수행 하 는 데 사용 되 는 편집 명령 입 니 다.다음 줄 에서 편집 을 시작 하기 전에 모든 편집 동작 은 모드 버퍼 의 줄 에 적 용 됩 니 다.
sed -e '1,10d' -e '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 -n '/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 -e '/hrwang/h' -e '$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 。 。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.