[하루 셸 명령] 텍스트 내용 조작 시리즈 - awk
awk 는 데이터 흐름 에 사용 되 어 열 과 줄 을 조작 할 수 있 도록 설계 되 었 습 니 다.sed 는 일치 합 니 다. 교체 와 삭 제 를 진행 합 니 다.awk 는 배열, 함수 등 내장 기능 이 많 습 니 다.유연성 은 awk 의 가장 큰 장점 이다.
awk 의 구조 awk 'BEGIN {print "start"} pattern {commands} END {print "end"}' file 은 보기 위해 차 를 되 돌 렸 습 니 다. 사실은 한 줄 입 니 다.
하나의 awk 스 크 립 트 는 보통 3 부분 1. BEGIN 구문 블록 2. 패턴 에 맞 는 일반적인 구문 블록 3. END 구문 블록 을 사용 할 수 있 습 니 다. 그들 은 어느 부분 도 스 크 립 트 에 나타 나 지 않 을 수 있 습 니 다.스 크 립 트 는 보통 작은 따옴표 나 작은 따옴표 에 포 함 됩 니 다.예 를 들 면:
- awk 'BEGIN{i=0}{i++}END{print i}' filename
작업 원리
awk 명령 의 작업 방식 은 다음 과 같 습 니 다.
1. BEGIN {commands} 구문 블록 에 있 는 문 구 를 실행 합 니 다.
2. 파일 이나 stdin 에서 한 줄 을 읽 은 다음 pattern {commands} 을 실행 합 니 다. 모두 읽 을 때 까지 교체 합 니 다.
3. 마지막 으로 END {commands} 문장 블록 실행
그들 은 어떤 것 도 없 을 수 있다 는 것 을 다시 한 번 일 깨 워 주 었 다.
awk 기능 도 그 뿐만 이 아니다.
입문 실례:
- echo | awk '{var1="v1";var2="v2";var3="v3"; print var1,var2,var3;}'
- 打印: v1 v2 v3
설명: 쉼표 는 경계 문자 (구분자)
- echo | awk '{var1="v1";var2="v2";var3="v3"; print var1"-"var2"-"var3;}'
인쇄 v1 - v2 - v3
인용 부호
다른 어떤 기호 도 v1, v2, v3 를 정상적으로 출력 할 수 없습니다.
해독 - help (매우 방대 하고 복잡 한 도움말 문서 로 공식 적 으로 410 페이지 의 PDF 로 소개 했다. 만약 내 가 한 마디 만 한다 면 너 는 나 자신 을 믿 어도 믿 지 않 는 다.)
용법: awk [POSIX 또는 GNU 스타일 옵션] - f 스 크 립 트 파일 [--] 파일... 용법: awk [POSIX 또는 GNU 스타일 옵션] [--] '프로그램' 파일... POSIX 옵션: GNU 롱 옵션: -f 스 크 립 트 파일 --file = 스 크 립 트 파일 -F fs --field - separator = fs 입력 텍스트 구분 자 를 지정 합 니 다. fs 는 문자열 이나 정규 표현 식 입 니 다. -v var=val --assign = var = val 외부 변수 값 을 var 에 지불 합 니 다. -m[fr] val -O --최적화 프로그램의 내부 표 시 를 사용 합 니 다. -W compat --compat 는 호 환 모드 에서 awk 를 실행 합 니 다.그래서 gawk 의 행동 은 표준 awk 와 마찬가지 로 모든 awk 확장 이 무시 되 었 습 니 다. -W copyleft --copyleft 짧 은 저작권 정보 인쇄 -W copyright --copyright 는 단판 의 통용 공공 허가증 을 인쇄 한 후 종료 합 니 다. -W dump-variables[=file] --dump - variables [= file] 전역 변 수 를 인쇄 합 니 다. 그 유형, 제출 한 최종 값 의 정렬 목록 입 니 다. -W exec=file --exec = file 은 - f 와 유사 하지만 그 와 는 두 가지 가 다르다. -W gen-po --gen - po (내용 이 너무 많아) -W help --help 인쇄 도움말 -W lint[=fatal] --lint [= fatal] 경고 수상 하거나 다른 awk 에 이식 되 지 않 은 구조 -W lint-old --전통 적 인 유 닉 스 플랫폼 에 이식 할 수 없 는 구조 에 대한 경 고 를 인쇄 합 니 다. -W non-decimal-data --non - decimal - data 는 자동 입력 데이터 의 해석 을 사용 합 니 다. 8 진법 과 16 진법 값 입 니 다. -W profile[=file] --profile [= file] awk 프로그램 분석 사용 하기 -W posix --poix 는 엄격 한 의미 에서 POSIX 모드 로 작 동 합 니 다. -W re-interval --re - interval 은 정규 표현 식 에 간격 표현 식 을 허용 합 니 다. -W source=program-text --source=program-text -W traditional --전통 적 인 유 닉 스 awk 정규 표현 식 일치 -W usage --usage -W use-lc-numeric --use - lc - numeric 에서 디지털 입력 을 분석 할 때 강제로 사용 하 는 언어 환경 에서 의 소수점 문자 데이터 -W version --version 오류 보고 서 를 제출 할 때 "gawk. info"의 "Bugs"페이지 를 참고 하 십시오. 인쇄 버 전의 "Reporting Problems and Bugs"절 에 있 습 니 다.
메모: gawk 는 awk 의 GNU 버 전 입 니 다. help 라 도 ubuntu 에 gawk 를 먼저 설치 해 야 합 니 다.
이번 에는 읽 지 않 겠 습 니 다. 여러분 의 정보 와 즐거움 을 높이 기 위해 기본 적 인 것 부터 하 겠 습 니 다.
부분 특수 변수:
NR: 기록 수량 을 표시 하고 실행 과정 에서 줄 번호 에 대응 합 니 다.
NF: 필드 수 를 표시 합 니 다. 실행 과정 에서 현재 줄 에 대응 하 는 필드 수 입 니 다.
$0: 이 변 수 는 실행 과정 에서 현재 줄 의 텍스트 내용 을 포함 합 니 다.
$1: 첫 번 째 필드 의 텍스트 내용
$2: 두 번 째 필드 의 텍스트 내용
예:
예 1.
- echo -e "line1 f2 f3
line2 f4 f5
line3 f6 f7"|\#这个\是在窗口中写多行命令用的
- awk '{
- print "Line no:"NR",No of fields:"NF, "$0="$0,"$1="$1,"$2="$2,"$3="$3
- }'
주석: $1 은 첫 번 째, $NF 는 마지막 필드, $(NF - 1) 는 마지막 두 번 째 필드 를 인쇄 합 니 다.
예 2.
- seq 5 | awk 'BEGIN{ sum=0;print "Summation:"}{print $1"+";sum+=1}END{print "==";print sum}'
이 예 는 기본 격식 을 사용 했다.
BEGIN 에서 sum 을 초기 화 하고 Summation 을 인쇄 합 니 다.
중간 모듈 에서 첫 번 째 열 을 인쇄 한 다음 sum + 1 을 드 립 니 다.
END 에 sum 이 인쇄 되 었 습 니 다.
예 3. 관련 - v 외부 변수
- $ VAR=10000
- $echo | awk –v VARIABLE=$VAR'{print VARABLE}'
또 다른 유연 한 방법 은 여러 개의 외부 변 수 를 awk 에 전달 할 수 있다. 예 를 들 어:
- $var1="value1" var2="value2"
- $echo | awk '{print v1,v2}' v1=$var1 v2=$var2
하면, 만약, 만약...
- awk '{print v1,v2}' v1=$var1 v2=$var2 filename
예 4
$awk 'NR < 5 '\# 줄 번호 가 5 보다 작 음
$awk 'NR = = 1, NR = = 4'\# 줄 번호 가 1 에서 5 사이 인 줄
$awk '/linux/'\# 스타일 Liux 를 포함 하 는 줄 (정규 표현 식 으로 스타일 을 지정 할 수 있 습 니 다)
$awk '!/linux/'\# 스타일 linux 줄 을 포함 하지 않 습 니 다.
이번 에는 먼저 이 글 을 써 서 2 장 을 써 서 awk 를 비교적 전면적 인 인식 을 할 수 있 도록 하 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.