Shell 스 크 립 트 정규 표현 식 - awk, sort, uniq, 여러 개의 작은 Demo 포함

5023 단어 awksortnuiqShell
awk 도구
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: 한 번 나타 난 줄 만 표시

좋은 웹페이지 즐겨찾기