awk介紹
- AWK是一種優(yōu)良的文本處理工具,Linux及Unix環(huán)境中現(xiàn)有的功能最強(qiáng)大的數(shù)據(jù)處理引擎之一
- 這種編程及數(shù)據(jù)操作語(yǔ)言(其名稱得自于它的創(chuàng)始人阿爾佛雷德·艾侯辛蚊、彼得·溫伯格和布萊恩·柯林漢姓氏的首個(gè)字母)的最大功能取決于一個(gè)人所擁有的知識(shí)
- AWK(Aho蹂楣、Weinberger、Kernighan) ,報(bào)告生成器揩懒,簡(jiǎn)單的來(lái)說(shuō)就是打報(bào)表,格式化文本輸出
- 它具備了一個(gè)完整的語(yǔ)言所應(yīng)具有的幾乎所有精美特性
- 實(shí)際上AWK的確擁有自己的語(yǔ)言:AWK程序設(shè)計(jì)語(yǔ)言挽封,三位創(chuàng)建者已將它正式定義為“樣式掃描和處理語(yǔ)言”
- AWK版本還特別多;New AWK (nawk), GNU AWK (gawk),當(dāng)然我們用的是GAWK已球,屬于GNU項(xiàng)目
awk基本用法
awk報(bào)告生成器,格式化輸出文本文件
-
awk基本語(yǔ)法格式
- awk [options] ‘program’ var=value file…
- awk [options] -f programfile var=value file…
- awk [options] 'BEGIN{ action;… } pattern{ action;… } END
- action;… }' file ...
optinos
表示可選的命令行選項(xiàng)prgoram
awk語(yǔ)句var=value
自己定義變量file....
處理文本文件programfile
調(diào)用程序文件program
通常是被單引號(hào)或雙引號(hào)中,建議用單引號(hào)辅愿,雙引號(hào)在后面有其他用途
-
awk程序
- awk 程序通常由:BEGIN語(yǔ)句塊智亮、能夠使用模式匹配的通用語(yǔ)句塊、END語(yǔ)句塊点待,共3部分組成
-
awk選項(xiàng)
- -F: 指明輸入時(shí)用到的字段分隔符
[root@localhost ~]# awk -F: '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-bus-proxy
systemd-network
dbus
polkitd
colord
abrt
libstoragemgmt
rpc
- -v :var=value: 自定義變量
[root@localhost ~]# awk -v RS=':' '{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
awk語(yǔ)言
- 基本格式:awk [options] 'program' file…
- program:pattern{action statements;..}
- pattern和action:
- pattern:部分決定動(dòng)作語(yǔ)句何時(shí)觸發(fā)及觸發(fā)事件
- BEGIN:相當(dāng)于處理文件內(nèi)容之前執(zhí)行的一個(gè)語(yǔ)句阔蛉,用于打印標(biāo)題
- END:
- action statements:對(duì)數(shù)據(jù)進(jìn)行處理,如統(tǒng)計(jì)癞埠、匯總等
- 分割符状原、域和記錄
- awk在執(zhí)行時(shí),由分割符來(lái)分割字段燕差,可以用冒號(hào)或者斜線等等要看自己的指定
- 切割完已后那就是一個(gè)字段遭笋,可以說(shuō)是局部變量
$1
、$2
...... 用awk自己來(lái)調(diào)用徒探,不用自己聲明瓦呼,有一個(gè)需要注意$0
就是所有字段或所有列 - 選項(xiàng)-F就是用來(lái)指定分割符的
- 域的意思就是已經(jīng)被切割完的字符,也可以稱呼為列或字段等,比如說(shuō)第一行就用$1他會(huì)把一列全打印顯示處理
- 記錄就是說(shuō)一行就是一條記錄央串,怎么去區(qū)分行一行或幾行磨澡,那就是分割符,分割符要看自己來(lái)指定千萬(wàn)別記太死
- 默認(rèn)空格為換行符质和,但是其他的換行符需要自己指定
awk工作原理
- 第一步:執(zhí)行BEGIN{action;… }語(yǔ)句塊中的語(yǔ)句
- 第二步:從文件或標(biāo)準(zhǔn)輸入(stdin)讀取一行稳摄,然后執(zhí)行pattern{ action;… }語(yǔ)句塊,它逐行掃描文件饲宿,從第一行到最后一行重復(fù)這個(gè)過(guò)程厦酬,直到文件全部被讀取完畢
- 第三步:當(dāng)讀至輸入流末尾時(shí),執(zhí)行END{action;…}語(yǔ)句塊
- BEGIN:這是一個(gè)可選的語(yǔ)句塊瘫想,比如變量初始化仗阅、打印輸出表格的表頭等語(yǔ)句
- END: 這也是一個(gè)科學(xué)的語(yǔ)句塊,比如打印所有行的分析結(jié)果等信息匯總或awk輸入流讀取完所有信息將會(huì)執(zhí)行END
- pattern語(yǔ)句塊中的通用命令是最重要的部分国夜,也是可選的减噪。如果沒(méi)有提供pattern語(yǔ)句塊,則默認(rèn)執(zhí)行{ print }车吹,即打印每一個(gè)讀取到的行筹裕,awk讀取的每一行都會(huì)執(zhí)行該語(yǔ)句塊
AWK是默認(rèn)讀取標(biāo)準(zhǔn)輸入的命令
讀取多少行就打印多少行,用文件輸入或手動(dòng)輸入都可以
-
要點(diǎn):
- 逗號(hào)分隔符
- 輸出的各item可以字符串窄驹,也可以是數(shù)值朝卒;當(dāng)前記錄的字段、變量或awk的表達(dá)式
- 如省略item馒吴,相當(dāng)于print $0
示例
[root@localhost ~]# awk '{print "hello,awk"}' /etc/passwd
hello,awk
hello,awk
hello,awk
hello,awk
hello,awk
hello,awk
hello,awk
hello,awk
- 在輸出的時(shí)候扎运,打印的內(nèi)容必須要以
,
號(hào)隔開不然會(huì)合并在一起
[root@localhost ~]# awk -F: '{print $1$4}' /etc/passwd
root0
bin1
daemon2
adm4
lp7
sync0
shutdown0
halt0
mail12
operator0
games100
ftp50
nobody99
systemd-bus-proxy997
systemd-network192
dbus81
polkitd996
colord995
abrt173
- 如果用
,
號(hào)將會(huì)分割開
[root@localhost ~]# awk -F: '{print $1,$4}' /etc/passwd
root 0
bin 1
daemon 2
adm 4
lp 7
sync 0
shutdown 0
halt 0
mail 12
operator 0
games 100
ftp 50
nobody 99
systemd-bus-proxy 997
systemd-network 192
dbus 81
polkitd 996
colord 995
abrt 173
- 如果你想用別的符號(hào)來(lái)分割你可以補(bǔ)上,中間加的是字符串哦饮戳,別搞混了
[root@localhost ~]# awk -F: '{print $1"===="$4}' /etc/passwd
root====0
bin====1
daemon====2
adm====4
lp====7
sync====0
shutdown====0
halt====0
mail====12
operator====0
games====100
ftp====50
nobody====99
systemd-bus-proxy====997
systemd-network====192
dbus====81
polkitd====996
colord====995
abrt====173
- 注意我們現(xiàn)在用的是變量不用加雙引號(hào)豪治,如果是字符串必須要加雙引號(hào),不然會(huì)這樣
[root@localhost ~]# awk -F: '{print $1====$4}' /etc/passwd
awk: cmd. line:1: {print $1====$4}
awk: cmd. line:1: ^ syntax error
- 那如果我想取磁盤利于分區(qū)利用率怎么取扯罐,可以這樣
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 41922560 385320 41537240 1% /
devtmpfs 2008832 0 2008832 0% /dev
tmpfs 2023456 0 2023456 0% /dev/shm
tmpfs 2023456 8772 2014684 1% /run
tmpfs 2023456 0 2023456 0% /sys/fs/cgroup
/dev/sda3 20961280 2679012 18282268 13% /usr
/dev/sda1 508580 148756 359824 30% /boot
tmpfs 404692 0 404692 0% /run/user/0
[root@localhost ~]# df|awk '{print $5}'
Use%
1%
0%
0%
1%
0%
13%
30%
0%
- 如果我只想要數(shù)值负拟,不想要符號(hào),或我只想要分區(qū)的數(shù)值歹河,怎么取掩浙,我們可以配合
grep
[root@localhost ~]# df|grep '^/dev/sd'|awk '{print $5}'|awk -F% '{print $1 }'
1
13
30
- 如果你什么都不寫會(huì)產(chǎn)生什么后果,那就相當(dāng)打印
$0
[root@localhost ~]# awk '{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
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
- 格式輸出的時(shí)候變量一定要一個(gè)一個(gè)的打印如
[root@localhost ~]# awk -F: '{print $1,$5,$3}' /etc/passwd
root root 0
bin bin 1
daemon daemon 2
adm adm 3
lp lp 4
sync sync 5
shutdown shutdown 6
halt halt 7
mail mail 8
operator operator 11
games games 12
ftp FTP User 14
nobody Nobody 99
- 不能這樣填寫變量
[root@localhost ~]# awk -F: '{print $1-3}' /etc/passwd
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
- 如果你想對(duì)其你可以加一個(gè)或多個(gè)TAB鍵秸歧,但是他是個(gè)字符串必須要加雙引號(hào)
[root@localhost ~]# awk -F: '{print $1"\t\t\t"$3}' /etc/passwd
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
awk變量
- 在awk里面也支持內(nèi)置變量和自定義變量
內(nèi)置變量
- 內(nèi)置變量
- FS:輸入字段分割符厨姚,默認(rèn)為空白字符
- FS是個(gè)變量需要賦值,功能和-F一樣
[root@localhost ~]# awk -v FS=: '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
- 還可以引用變量
[root@localhost ~]# awk -v FS=':' '{print $1,FS,$3}' /etc/passwd
root : 0
bin : 1
daemon : 2
adm : 3
lp : 4
sync : 5
shutdown : 6
halt : 7
mail : 8
operator : 11
games : 12
ftp : 14
nobody : 99
- OFS:輸出字段分割符键菱,默認(rèn)為空白字符
[root@localhost ~]# awk -F: -v OFS='-' '{print $1,$3}' /etc/passwd
root-0
bin-1
daemon-2
adm-3
lp-4
sync-5
shutdown-6
halt-7
mail-8
operator-11
games-12
ftp-14
- RS:輸入記錄分割符谬墙,指定輸入時(shí)的換行符,原換行符仍有效
[root@localhost ~]# awk -v RS=' ' '{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
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
- ORS:輸出記錄分隔符,輸出時(shí)用指定符號(hào)代替換行符
[root@localhost ~]# awk -F: -v ORS="---" '{print $1}' /etc/passwd
root---bin---daemon---adm---lp---sync---shutdown---halt---mail---operator---games---ftp---nobody---systemd-bus-proxy---systemd-network---dbus---polkitd---colord---abrt---libstoragemgmt---rpc---setroubleshoot---rtkit---usbmuxd---tss---geoclue---chrony---mysql---pulse---gdm---rpcuser---nfsnobody---postfix---ntp---ssh
- NF:字段數(shù)量拭抬,表示一共有7個(gè)字段
[root@localhost ~]# awk -F: 'END{print NF}' /etc/passwd
7
- NR :行號(hào)
[root@localhost ~]# awk -F: '{print NR,$1}' /etc/passwd
1 root
2 bin
3 daemon
4 adm
5 lp
6 sync
7 shutdown
8 halt
9 mail
10 operator
11 games
12 ftp
13 nobody
14 systemd-bus-proxy
15 systemd-network
16 dbus
17 polkitd
18 colord
19 abrt
- FNR: 各個(gè)文件分別計(jì)數(shù)部默,行號(hào)
[root@localhost ~]# awk '{print FNR,$0}' /etc/issue /etc/fstab
1 \S
2 Kernel \r on an \m
3
4 Mage Education Learning Services
5 http://www.magedu.com
6
1
2 #
3 # /etc/fstab
4 # Created by anaconda on Thu Jul 13 08:26:25 2017
5 #
6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
8 #
- FILENAME:當(dāng)前文件名
[root@localhost ~]# awk -F: '{print FILENAME,$0}' /etc/issue
/etc/issue \S
/etc/issue Kernel \r on an \m
/etc/issue
/etc/issue Mage Education Learning Services
/etc/issue http://www.magedu.com
/etc/issue
- ARGC:命令行參數(shù)的個(gè)數(shù)
[root@localhost ~]# awk -F: '{print ARGC}' /etc/passwd /etc/issue /etc/fstab
4
4
4
4
4
4
4
4
4
- ARGV:數(shù)組,保存的是命令行所給定的各參數(shù)
[root@localhost ~]# awk -F: '{print ARGC,ARGV[0]}' /etc/passwd /etc/issue /etc/fstab
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
變量名 | 屬性 |
---|---|
$0 |
當(dāng)前記錄 |
$1~$n |
當(dāng)前記錄的第n個(gè)字段 |
FS | 輸入只讀分割符 默認(rèn)的是空格 |
RS | 輸入記錄分割符 默認(rèn)為換行符 |
NF | 當(dāng)前記錄中的字段個(gè)數(shù)造虎,就是有多少列 |
NR | 已經(jīng)獨(dú)處的記錄數(shù)傅蹂,就是行號(hào),從1開始 |
OFS | 輸出字段分割符 默認(rèn)也是空格 |
ORS | 輸出的記錄分割符 默認(rèn)為換行符 |
FNR | 分別計(jì)數(shù) |
FILENAME | 顯示當(dāng)前文件名 |
ARGC | 顯示參數(shù)個(gè)數(shù) |
ARGV | 打印數(shù)組參數(shù) |
注:內(nèi)置變量很多算凿,參閱相關(guān)資料
自定義變量
- 自定義變量(區(qū)分字符大小寫)
- -v var=value
- 在program中直接定義
- 示例
[root@localhost ~]# awk -v name=root '{print name}' /etc/passwd
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
- 變量調(diào)取還可以這樣
[root@localhost ~]# awk '{sex="male";print sex }' /etc/passwd
male
male
male
male
male
male
male
male
male
male
male
male
male
male
male
- 還可以把他寫成一個(gè)腳本如
[root@localhost ~]# vi f1.awk
{sex="male";print sex}
~
~
- 把他顯示調(diào)取出來(lái)份蝴,但是要記住在里面不要放單引號(hào)不然出錯(cuò)
[root@localhost ~]# awk -f f1.awk /etc/passwd
male
male
male
male
male
male
male
male
male
male
male
printf
- 格式化輸出:printf “FORMAT”, item1, item2, ...
- 必須指定FORMAT, 也就是格式
- 不會(huì)自動(dòng)換行,需要顯式給出換行控制符氓轰,\n
- FORMAT中需要分別為后面每個(gè)item指定格式符
- 格式符:與item一一對(duì)應(yīng)
輸出控制符 | 含義 |
---|---|
%C | 顯示字符的ASCII碼 |
%d搞乏,%i | 顯示十進(jìn)制整數(shù) |
%e ,%E | 顯示科學(xué)計(jì)數(shù)法數(shù)值 |
%f | 顯示為浮點(diǎn)數(shù) |
%g ,%G | 以科學(xué)計(jì)數(shù)法或浮點(diǎn)形式顯示數(shù)值 |
%s | 顯示字符串 |
%u | 無(wú)符號(hào)整數(shù) |
%% | 顯示%自身 |
- 修飾符:
-#[.#]:
第一個(gè)數(shù)字控制顯示的寬度戒努;第二個(gè)#表示小數(shù)點(diǎn)后精度,%3.1f- -: 左對(duì)齊(默認(rèn)右對(duì)齊) %-15s
- +:顯示數(shù)值的正負(fù)符號(hào) %+d
- 示例
[root@localhost ~]# awk -F: '{printf "%s---%d\n", $1,$3}' /etc/passwd
root---0
bin---1
daemon---2
adm---3
lp---4
sync---5
shutdown---6
halt---7
mail---8
operator---11
games---12
ftp---14
nobody---99
systemd-bus-proxy---999
systemd-network---192
dbus---81
- 如果你想右對(duì)齊可以這樣镐躲,因?yàn)槟J(rèn)是右對(duì)齊
[root@localhost ~]# awk -F: '{printf "%s---%d\n", $1,$3}' /etc/passwd
root---0
bin---1
daemon---2
adm---3
lp---4
sync---5
shutdown---6
halt---7
mail---8
operator---11
games---12
ftp---14
nobody---99
systemd-bus-proxy---999
systemd-network---192
dbus---81
- 如果你想左對(duì)齊储玫,可以這樣
[root@localhost ~]# awk -F: '{printf "%-30s---%d\n", $1,$3}' /etc/passwd
root ---0
bin ---1
daemon ---2
adm ---3
lp ---4
sync ---5
shutdown ---6
halt ---7
mail ---8
operator ---11
games ---12
ftp ---14
nobody ---99
systemd-bus-proxy ---999
systemd-network ---192
- 還可以這樣玩,反正自己看著玩
[root@localhost ~]# awk -F: '{printf "%+30s---%+30d\n", $1,$3}' /etc/passwd
root--- +0
bin--- +1
daemon--- +2
adm--- +3
lp--- +4
sync--- +5
shutdown--- +6
halt--- +7
mail--- +8
operator--- +11
games--- +12
- 還可以添加字符串萤皂,是里面不是外面注意
[root@localhost ~]# awk -F: '{printf "username:%-30s%-10d\n", $1,$3}' /etc/passwd
username:root 0
username:bin 1
username:daemon 2
username:adm 3
username:lp 4
username:sync 5
username:shutdown 6
username:halt 7
username:mail 8
username:operator 11
username:games 12
username:ftp 14
username:nobody 99
username:systemd-bus-proxy 999
username:systemd-network 192
username:dbus 81
操作符
- 算術(shù)操作符:
- x+y, x-y, x*y, x/y, x^y, x%y
- -x: 轉(zhuǎn)換為負(fù)數(shù)
- +x: 轉(zhuǎn)換為數(shù)值
- 字符串操作符:沒(méi)有符號(hào)的操作符撒穷,字符串連接
- 賦值操作符:
- =, +=, -=, *=, /=, %=, ^=
- ++, --
- 比較操作符:
- ==, !=, >, >=, <, <=
- 模式匹配符:~:左邊是否和右邊匹配包含 !~:是否不匹配
- 示例
- 下面的意思是如果$0包含root就打印,沒(méi)有就不打印
[root@localhost ~]# awk -F: '$0 ~ /root/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
- 如下我想打印小于UID100的用戶
[root@localhost ~]# awk -F: '$3<=1000{print $1,$3}' /etc/passwd
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
games 12
ftp 14
nobody 99
systemd-bus-proxy 999
systemd-network 192
- 如果我想打印UID大于100的用戶
[root@localhost ~]# awk -F: '$3>=1000{print $1,$3}' /etc/passwd
nfsnobody 65534
mageedu 1000
- 邏輯操作符:與&&裆熙,或||端礼,非!
- 示例
[root@localhost ~]# awk -F: '$3>=0 && $3<=1000 {print $1,$3}' /etc/passwd
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
games 12
ftp 14
nobody 99
systemd-bus-proxy 999
systemd-network 192
dbus 81
- 或者小于10大于1000,的打印出來(lái)
[root@localhost ~]# awk -F: '$3<=0 || $3>=1000 {print $1,$3}' /etc/passwd
root 0
nfsnobody 65534
mageedu 1000
- 還可以取非
[root@localhost ~]# awk -F: ' ! ($3>1000) {print $1,$3}' /etc/passwd
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
games 12
ftp 14
nobody 99
systemd-bus-proxy 999
systemd-network 192
dbus 81
正則表達(dá)式
正則表達(dá)式要多練這里只舉幾個(gè)例子
如果我只想用AWK來(lái)提取磁盤信息入录,怎么取蛤奥,我們可以用包含來(lái)提取
[root@localhost ~]# df|awk '$0 ~ "^/dev/sd"'
/dev/sda2 41922560 388520 41534040 1% /
/dev/sda3 20961280 2679012 18282268 13% /usr
/dev/sda1 508580 148756 359824 30% /boot
- 當(dāng)前里面還可以取反
[root@localhost ~]# df|awk '$0 !~ "^/dev/sd"'
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 2008832 0 2008832 0% /dev
tmpfs 2023456 0 2023456 0% /dev/shm
tmpfs 2023456 8800 2014656 1% /run
tmpfs 2023456 0 2023456 0% /sys/fs/cgroup
tmpfs 404692 0 404692 0% /run/user/0
BEGIN 和END 模塊
- 通常,對(duì)于每個(gè)輸入行僚稿,awk 都會(huì)執(zhí)行每個(gè)腳本代碼塊一次凡桥。然而,在許多編程情況中
- 可能需要在awk 開始處理輸入文件中的文本之前執(zhí)行初始化代碼蚀同。對(duì)于這種情況缅刽,awk 允許
- 您定義一個(gè)BEGIN 塊。我們?cè)谇耙粋€(gè)示例中使用了BEGIN 塊蠢络。因?yàn)閍wk 在開始處理輸入文件之前會(huì)執(zhí)行BEGIN 塊
- 因此它是初始化 FS(字段分隔符)變量衰猛、打印頁(yè)眉或初始化其它
在程序中以后會(huì)引用的全局變量的極佳位置
三目表達(dá)式
- 三目就是三個(gè)元素,三個(gè)組成部分刹孔,第一部分冒號(hào)啡省,以此類推
- 示例
[root@localhost ~]# awk -F: '{$3>=1000?username="common user":username="sysuser";printf "%s %s %d\n" ,username,$1,$3}' /etc/passwd
sysuser root 0
sysuser bin 1
sysuser daemon 2
sysuser adm 3
sysuser lp 4
sysuser sync 5
sysuser shutdown 6
sysuser halt 7
sysuser mail 8
sysuser operator 11
sysuser games 12
sysuser ftp 14
sysuser nobody 99
- 或者來(lái)對(duì)齊下
[root@localhost ~]# awk -F: '{$3>=1000?username="common user":username="sysuser";printf "%s %20s %20d\n" ,username,$1,$3}' /etc/passwd
sysuser root 0
sysuser bin 1
sysuser daemon 2
sysuser adm 3
sysuser lp 4
sysuser sync 5
sysuser shutdown 6
sysuser halt 7
sysuser mail 8
sysuser operator 11
sysuser games 12
sysuser ftp 14
sysuser nobody 99
sysuser systemd-bus-proxy 999
sysuser systemd-network 192
sysuser dbus 81
sysuser polkitd 998
sysuser colord 997
sysuser abrt 173
sysuser libstoragemgmt 996
sysuser rpc 32