sed 고급 용법 의 g G H x
sed 가 뭐야?
sed 는 흐름 을 위 한 줄 편집기 입 니 다. 흐름 을 위 한 것 이란 표준 입력 을 받 아들 이 고 출력 내용 을 표준 출력 에 표시 하 는 것 을 말 합 니 다.
sed 는 데 이 터 를 어떻게 처리 합 니까?
sed 는 정상 적 인 상황 에서 처 리 된 줄 을 패턴 공간 (pattern space) 에 읽 고 스 크 립 트 의 'sed - command (sed 명령)' 를 하나씩 처리 하여 스 크 립 트 가 실 행 된 것 을 알 수 있 습 니 다.그리고 이 줄 은 출력 입 니 다. 모드 (pattern space) 가 비 워 집 니 다.이 어 방금 한 동작 을 반복 하면 서 파일 의 새 줄 이 파일 처리 가 끝 날 때 까지 읽 혔 다.
Pattern Space 가 뭐야, Hold Space 가 뭐야?
pattern space 는 작업장 sed 가 흐름 내용 을 여기 서 처리 하 는 것 과 같다.
hold space 는 창고 에 해당 하 며 가공 한 반제품 은 여기에 임시로 저장 합 니 다.
PS: pattern space 를 하나의 흐름 선 으로 볼 수 있 습 니 다. 모든 동작 은 '흐름 선' 에서 실 행 됩 니 다.한편, hold space 는 '창고' 로 '라인' 의 동쪽 은 모두 여기에 놓 을 수 있다.
왜 sed 고급 명령 (G, H, g, h, n, N, x) 을 사용 합 니까?
여러 가지 이유 로 예 를 들 어 사용자 가 특정한 조건 에서 스 크 립 트 의 특정한 명령 이 실행 되 기 를 원 하거나 다음 처 리 를 위해 모드 공간 이 보존 되 기 를 원 하 는 경우 sed 가 파일 을 처리 할 때 정상 적 인 절차 에 따라 진행 되 지 않 을 수 있 습 니 다.이 때, sed 는 사용자 의 요 구 를 만족 시 키 기 위해 고급 명령 을 설정 했다.
sed 명령:
+ g: [address [, address] g hold space 의 내용 을 pattern space 에 복사 하여 원래 pattern space 의 내용 을 지 웁 니 다.
+ G: [address [, address]] G 는 hold space 의 내용 을 pattern space 에 append 한 후
+ h: [address [, address] h pattern space 의 내용 을 hold space 에 복사 하면 원래 hold space 의 내용 이 삭 제 됩 니 다.
+ H: [address [, address]] H pattern space 의 내용 을 hold space 에 append 한 후
+ d: [address [, address] d pattern 의 모든 줄 을 삭제 하고 다음 줄 을 pattern 에 읽 습 니 다.
+ D: [address [, address]] D multiline pattern 의 첫 줄 을 삭제 하고 다음 줄 을 읽 지 않 습 니 다.
PS: G, g, H, h 를 사용 하 든 hold space 의 내용 인 'copy' 를 pattern space 에 넣 거나 pattern space 의 내용 인 'copy' 를 hold space 에 넣 습 니 다.
영어 의 해석 을 첨부 합 니 다.
The "h"command copies the pattern buffer into the hold buffer. The pattern buffer is unchanged.
Instead of exchanging the hold space with the pattern space, you can copy the hold space to the pattern space with the "g"command. This deletes the pattern space. If you want to append to the pattern space, use the "G"command. This adds a new line to the pattern space, and copies the hold space after the new line.
예제: sed 로 tac 의 기능 (역순 출력) 을 모 의 합 니 다.
파일 내용
cat mm
1
2
3
해결 방법:
sed ‘1!G;h;$!d’mm
ps:1!G 첫 줄 은 'G' 명령 을 실행 하지 않 고 두 번 째 줄 부터 실행 합 니 다.
$!d. 마지막 줄 은 삭제 하지 않 습 니 다 (마지막 줄 유지)
도해 분석 과정
P:Pattern Space
H:Hold Space
파란색: Hold Space 의 데이터
녹색: Pattern Space 의 데이터
참고:
《 sed and awk 제2판 》
Sed - An Introduction and Tutorial by Bruce Barnett
sed 의 고급 응용 프로그램 - haijd Article
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
sed d D 비교그리고 두 번 째 줄 을 읽 고 일치 하기 때문에 N 은 세 번 째 줄 을 계속 읽 은 다음 에/^ $/와 일치 합 니 다. 이 어 네 번 째 줄 을 읽 고 일치 하기 때문에 N 은 다섯 번 째 줄 을 계속 읽 은 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.