셸 의 텍스트 필터 (awk)
4437 단어 linux셸 스 크 립 트 학습
필요 한 정 보 를 얻 기 위해 서 는 텍스트 를 포맷 해 야 합 니 다. 즉, 도 메 인 구분자 로 추출 도 메 인 을 구분 하려 면 구분자 가 임의의 문 자 를 사용 할 수 있 습 니 다.
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: 문장 양쪽 이 동시에 혹은 그 중 한쪽 이 진짜 로 일치 합 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.