셸 의 텍스트 필터 (awk)

메 시 지 를 포맷 하거나 큰 텍스트 파일 에서 패 키 지 를 추출 하려 면 awk 에서 이 작업 을 수행 할 수 있 습 니 다.
필요 한 정 보 를 얻 기 위해 서 는 텍스트 를 포맷 해 야 합 니 다. 즉, 도 메 인 구분자 로 추출 도 메 인 을 구분 하려 면 구분자 가 임의의 문 자 를 사용 할 수 있 습 니 다.
awk 언어의 가장 기본 적 인 기능 은 파일 이나 문자열 에서 지정 한 규격 을 바탕 으로 정 보 를 탐색 하고 추출 하 는 것 입 니 다.awk 에서 정 보 를 추출 한 후에 야 다른 텍스트 작업 을 할 수 있 습 니 다.awk 스 크 립 트 는 보통 텍스트 파일 의 정 보 를 포맷 하 는 데 사 용 됩 니 다.
1. awk 호출
① 명령 행 방식:
awk [-F field-separator] 'commands' input-file(s)  //‘commands’    awk  

[- F 도 메 인 구분자] 선택 할 수 있 습 니 다. awk 는 빈 칸 을 부족 한 도 메 인 구분자 로 사용 합 니 다.
② 모든 awk 명령 을 파일 에 삽입 합 니 다. awk 프로그램 이 실행 가능 한 다음 awk 명령 해석 기 를 스 크 립 트 의 첫 줄 로 사용 하여 스 크 립 트 이름 을 입력 하여 호출 할 수 있 습 니 다.
③ 모든 awk 명령 을 하나의 단독 파일 에 삽입 하고 호출 합 니 다.
awk -f awk-script-file input-files(s)

2. awk 스 크 립 트
명령 에서 awk 를 호출 할 때 awk 스 크 립 트 는 각종 조작 과 모드 로 구성 되 어 있 습 니 다.
awk 는 매번 기록 이나 한 줄 을 읽 고 지정 한 구분자 로 지정 한 도 메 인 을 구분 합 니 다.
① 모드 와 동작
모든 awk 문 구 는 패턴 과 동작 으로 구성 되 어 있다.패턴 부분 은 동작 문 이 언제 트리거 되 고 트리거 되 는 지 결정 합 니 다.처리 란 데이터 에 대한 조작 이다.모드 를 생략 하면 동작 은 항상 실행 상 태 를 유지 합 니 다.
패턴 은 모든 조건문 이나 복합 표현 식 이나 정규 표현 식 을 사용 할 수 있 습 니 다.
패턴 은 두 개의 특수 문자 인 BEGIN 과 END 를 포함 합 니 다.
BEGIN 문 구 는 계수 와 인쇄 헤드 를 설정 합 니 다.모든 텍스트 탐색 동작 에 사용 하기 전에 사용 합 니 다.
END 문 구 는 awk 에서 텍스트 탐색 동작 을 완성 한 후에 출력 텍스트 의 총수 와 끝 상태 표 지 를 인쇄 하 는 데 사 용 됩 니 다. 패턴 을 특별히 가리 키 지 않 고 awk 는 항상 일치 하거나 줄 수 를 인쇄 합 니 다.
 
3. 도 메 인과 기록
awk 가 실 행 될 때 탐색 영역 은 $1, $2,... $n 으로 표 시 됩 니 다. $n 은 n 번 도 메 인 을 참조 하고 $0 은 모든 도 메 인 을 표시 하 며 쉼표 로 도 메 인 을 구분 합 니 다.
하나 또는 모든 도 메 인 을 인쇄 하고 print 명령 을 사용 합 니 다.이것 은 awk 동작 입 니 다. 동작 문법 은 '{' 입 니 다.  }'묶다
① 추출 영역
예:
M.Tansley	  05/99   48311   Green   8   40  44
J.Lulu     06/99   48317   green   9   24  26
P.Bunny    02/99   48      Yellow  12  35  28
J.Troll    07/99   4842    Brown-3 12  26  26
L.Tansley  05/99   4712    Brown-2 12  30  28

먼저 파일 의 정 보 를 추출 하여 도 메 인 형식 으로 나 누 어야 합 니 다.
② awk 출력 저장
셸 프롬프트 에 있 는 awk 스 크 립 트 출력 을 저장 하 는 두 가지 방법 이 있 습 니 다.
하 나 는 출력 리 셋 기호 > 파일 이름 을 사용 합 니 다.
awk '{print $0}' readfile > savefile

두 번 째 방법 은 tee 명령 을 사용 하여 파일 로 출력 하 는 동시에 화면 으로 출력 하 는 것 입 니 다.
awk '{print $0}' readfile | tee savefile

③ 표준 입력 사용
실제로 모든 스 크 립 트 는 표준 입력 에서 입력 을 받 습 니 다.
   :$awkscript readfile
   (   ):$awkscript < radfile
   (  ):$readfile | awkscript

④ 모든 기록 인쇄
awk '{print $0}' readfile	//      

⑤ 단독 기록 인쇄
$1, $2... $n 을 사용 하여 도 메 인 표시 사 이 를 쉼표 로 구분 합 니 다.
awk '{print $1,$4}' readfile	//   1  4

⑥ 보고서 출력 헤드
awk 'BEGIN {print "xxxx"}{print $1"\t"$4}' readfile

⑦ 인쇄 정보 끝
awk 'BEGIN {print "xxx"} {print $1} END {print "end"}' readfile

 
4. awk 의 정규 표현 식
여기 정규 표현 식 은 사선 으로 묶 고/문자열/① 일치 합 니 다.
도 메 인 번 호 를 표현 식 과 일치 시 키 고 기호 '~' 를 사용 한 후 정규 표현 식 을 바짝 따 르 거나 if 문 구 를 사용 할 수 있 습 니 다. awk 에서 if 문 뒤의 조건 은 () 로 묶 습 니 다.
awk '{if($4~/   /) print $0}' readfile	//   4        ,    
awk '{$0 ~ /   /'} readfile //            ,    

② 정확 한 일치
awk '{if($3 ~ /   /) print $0}' readfile	//             ,   
awk '$3 == "   " {print $0}' readfile	//           ,    

③ 일치 하지 않 음
awk '{if($4 !~ /     /) print $0}' readfile

④ 작 음
awk '{if($6

⑤ 작 으 면
awk '{if($6<=$7) print "xxx"}' readfile

⑥ 보다 크다
awk '{if($6》$7) print "xxx"}' readfile

⑦ 대소 문자 설정
대소 문자 정 보 를 조회 하기 위해 [] 기 호 를 사용 할 수 있 습 니 다.
awk '/[Gg]reen/' readfile	//  green Green  

⑨ 임 의 문자
awk '$1 ~/^...a/' readfile	//   1,             a

⑨ 또는 관계 일치
사용 또는 관계 부 호 를 사용 할 때, 문장 은 반드시 괄호 로 묶 어야 한다
awk '$0 ~ /(   1|   2)/' readfile	//  |      

행수.
awk '/^   /' readfile

 
기타
&&   AND: 문장 양쪽 이 동시에 진실 이 어야 합 니 다.
||  OR: 문장 양쪽 이 동시에 혹은 그 중 한쪽 이 진짜 로 일치 합 니 다!
 

좋은 웹페이지 즐겨찾기