sed 고급 용법 의 g G H x

2650 단어 sedsed 용법SHELL
sed 의 G, H, g, h 사용
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

좋은 웹페이지 즐겨찾기