Shell 스 크 립 트 정규 표현 식 - awk, sort, uniq, 여러 개의 작은 Demo 포함
Linux/UNIX 시스템 에서 awk 는 강력 한 기능 을 가 진 편집 도구 로 입력 텍스트 를 한 줄 씩 읽 고 지 정 된 일치 모드 에 따라 찾 으 며 조건 에 맞 는 내용 을 포맷 출력 하거나 여과 처리 하여 상호작용 없 이 상당히 복잡 한 텍스트 작업 을 수행 할 수 있 으 며 Shell 스 크 립 트 에 광범 위 하 게 응용 되 어 각종 자동화 설정 작업 을 수행 할 수 있 습 니 다.
1. awk 일반적인 용법: 일반적인 상황 에서 awk 가 사용 하 는 명령 형식 은 다음 과 같 습 니 다. 그 중에서 작은 따옴표 에 큰 괄호 '{}' 을 붙 여 데이터 에 대한 처리 동작 을 설정 하 는 데 사 용 됩 니 다.awk 는 대상 파일 을 직접 처리 할 수도 있 고 '- f' 를 통 해 스 크 립 트 를 읽 어 대상 파일 을 처리 할 수도 있 습 니 다.
Demo1:
/etc/passwd 의 사용자 이름 등 열 을 찾 아 다음 명령 을 수행 합 니 다.
[root@localhost ~]# awk -F ':' '{print $1,$3,$4}' /etc/passwd
root 0 0
bin 1 1
daemon 2 2
//
awk 는 다음 과 같은 몇 가지 특수 한 내장 변 수 를 포함 합 니 다.
FS: , 。
NF: 。
NR: ( )。
$0: 。
$n: n ( n )。
FILENAME: 。
RS: ,
, 。
줄 별로 텍스트 출력:
[root@localhost ~]# awk 'NR==1,NR==3{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@localhost ~]# awk -F ":" 'NR==1,NR==3{print $1,$3}' /etc/passwd
root 0
bin 1
daemon 2
[root@localhost ~]# awk -F ":" '(NR>=1)&&(NR<=3){print $1,$3}' /etc/passwd
root 0
bin 1
daemon 2
모든 짝수 줄 의 내용 출력:
:
[root@localhost ~]# awk -F ":" 'NR%2==1{print $1,$3}' /etc/passwd
root 0
daemon 2
lp 4
shutdown 6
mail 8
games 12
nobody 99
dbus 81
abrt 173
rpc 32
saslauth 996
pulse 171
rpcuser 29
ntp 38
usbmuxd 113
qemu 107
setroubleshoot 993
gdm 42
sshd 74
postfix 89
zhou 1000
named 25
:
[root@localhost ~]# awk -F ":" 'NR%2==0{print $1,$3}' /etc/passwd
bin 1
adm 3
sync 5
halt 7
operator 11
ftp 14
systemd-network 192
polkitd 999
libstoragemgmt 998
colord 997
rtkit 172
chrony 995
nfsnobody 65534
tss 59
geoclue 994
radvd 75
sssd 992
gnome-initial-setup 991
avahi 70
tcpdump 72
dhcpd 177
루트 로 시작 하 는 줄 출력:
[root@localhost ~]# awk '/^root/{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
/bin/bash 로 끝 나 는 줄 수 를 집계 합 니 다:
[root@localhost ~]# awk 'BEGIN {x=0} ; /\/bin\/bash$/{x++};END {print x}' /etc/passwd
2
빈 줄 로 구 분 된 텍스트 단락 수 통계:
[root@localhost opt]# vim name.txt
zhangsan:lisi:wangwu
zhaoliu:liuliu
heiba:heihei
[root@localhost opt]# awk 'BEGIN{RS=":"};END{print NR}' /opt/name.txt
5
// : ,
필드 출력:
[root@localhost opt]# awk -F ":" '$3=="0"{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@localhost opt]# awk -F ":" '$3=="0"{print $1,$7}' /etc/passwd
root /bin/bash
shadow :
[root@localhost opt]# awk 'BEGIN{FS=":"};$3=="0"{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
7 bash:
[root@localhost opt]# awk -F : '$7~"bash"{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
zhou:x:1000:1000:zhou:/home/zhou:/bin/bash
, nfs 7 1,3,7
:[root@localhost opt]# awk -F : '($1~"nfs")&&(NF==7){print $1,$3,$7}' /etc/passwd
nfsnobody 65534 /sbin/nologin
:[root@localhost opt]# awk 'BEGIN{FS=":"};($1~"nfs")&&(NF==7){print $1,$3,$7}' /etc/passwd
nfsnobody 65534 /sbin/nologin
, /sbin/nologin 7 ,1,3,7
[root@localhost opt]# awk 'BEGIN{FS=":"};($7!="/sbin/nologin")&&(NF==7){print $1,$3,$7}' /etc/passwd
root 0 /bin/bash
sync 5 /bin/sync
shutdown 6 /sbin/shutdown
halt 7 /sbin/halt
zhou 1000 /bin/bash
named 25 /bin/false
wc - l 명령 을 호출 하여 bash 를 사용 하 는 사용자 개 수 를 집계 합 니 다:
[root@localhost opt]# awk -F : '/bash$/{print | "wc -l"}' /etc/passwd
2
w 명령 을 호출 하고 온라인 사용자 수 를 집계 합 니 다:
[root@localhost opt]# awk 'BEGIN {while ("w" | getline) n++;{print n-2}}'
1
hostname 을 호출 하고 현재 호스트 이름 을 출력 합 니 다:
[root@localhost opt]# awk 'BEGIN {"hostname" | getline ; print $0}'
localhost.localdomain
sort 도구
Linux 시스템 에서 자주 사용 하 는 파일 정렬 도 구 는 세 가지 가 있 습 니 다. sort, 유 니 크, wc 입 니 다. 그 중에서 sort 는 행동 단위 로 파일 내용 을 정렬 하 는 도구 이 고 데이터 형식 에 따라 정렬 할 수 있 습 니 다.예 를 들 어 데이터 와 문자 의 노름판 은 다르다.sort 명령 의 문법 은 'sort [옵션] 매개 변수' 입 니 다. 그 중에서 자주 사용 하 는 옵션 은 다음 과 같은 몇 가 지 를 포함 합 니 다.
- f: 대소 문자 무시
- b: 줄 마다 앞 에 있 는 빈 칸 무시
- M: 월 별로 정렬
- n: 숫자 에 따라 정렬
- r: 역방향 정렬
- u: 유 니 크 와 같 습 니 다. 같은 데 이 터 를 한 줄 만 표시 합 니 다.
- t: 구분자 지정, 기본 값 [Tab] 키 로 구분자 사용
- o: 정렬 된 결 과 를 지정 한 파일 로 저장 합 니 다.
- k: 정렬 영역 지정
유 니 크 도구
유 니 크 도 구 는 리 눅 스 시스템 에서 보통 sort 명령 과 결합 하여 사용 되 며 파일 의 중복 줄 을 보고 하거나 무시 합 니 다.구체 적 인 명령 문법 형식 은 유 니 크 [옵션] 인자 입 니 다.그 중에서 자주 사용 하 는 옵션 은 다음 과 같은 몇 가 지 를 포함한다.
- c: 계수 진행
- d: 중복 줄 만 표시
- u: 한 번 나타 난 줄 만 표시
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[fish] awk의 스크립트 부분을 히스토리에서 보완awk 의 사용법이 우울한 기억으로, 그렇다면 어떻게 할까? 다시 검색하는 것이 많았기 때문에 어떻게든하고 싶다. peco 그리고 과거의 awk 이력을 찾는 것도 있지만, fish 그래서 보완으로 해결할 수 있으면 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.