9.6/9.7awk
9.6 awk上:
支持分段
例如,passwd文件比较有规律,以冒号作为间隔。那我们可以用awk来分段匹配。就是root为一段,数字为一段这样吧他匹配出来
比grep sed的强大之处在于可以以段的匹配出来
并且不用加特殊的字符,例如脱意、花括号,问号等等
~1. awk -F ':' '{print $1}' test.txt -F指定分隔符
表示打印这个文件的第一段,以:作为间隔
$0表示所有段
~2. 不加-F awk '{print $1}' test.txt
如果没有指定间隔符,他将默认空格为间隔
~3. 不加-F
awk '{print $0}' test.txt 可以打印所有的这个文件,相当于cat
~4. 不加-F awk '{print $1,$2,$3}' test.txt
默认分割,打印出第一段第二段第三段。不加-F指定的话,就默认空格间隔
~5. awk -F ':' '{print $1"#"$2"#"$3}' test.txt
打印出来的一二三段以#作为间隔,列出来
~6. awk的匹配功能
awk '/oo/' test.txt
将带有oo的全部打印出来
~7. awk -F ‘:’ ‘$1 ~ /oo/' test.txt
指定以:作为间隔的第一段,匹配出带有oo的字符。需要加 ~
~8. awk -F ':' '$1 ~ /o+/' test,txt
同样支持正则表达式
~9. awk -F ':' '/root/ {print $1,$2} /user/ {print $1,$2,$3}' test.txt
支持多个表达式一起写
将带有root的,以:作为间隔的第一段第2段匹配出来。将带有user的,以:作为间隔的第一二三段匹配出来
~10. awk -F ':' '/root|user/ {print $0}' test.txt
将所有段,带有root和user的匹配出来
针对数学预算表达式的
~11. awk -F ':' '$3==0' test.txt
以:为间隔,第三段等于0的,打印出来。不加{prient}就代表所以行。第三段等于0要加两个等于号,为了区分变量
awk -F ':' '$3==0 {print $0}' test.txt
意思同上,加了{print $0}就表示针对的是所有段
~12. awk -F ':' '$3>=1000 {print $0}'test.txt
以:为间隔,第三段大于等于1000的,打印出来。针对所有行
~13. awk -F ':' '$3>="1000" {print $0}'test.txt
意思同上,但是加了双引号。即代表他会以阿斯玛排序的模式式打印出来,并且如果有五位数的也会匹配出来,阿斯玛定律他只匹配字符的前四段。如100011111,一样会匹配出来,因为前四段符合要求
~14. awk -F ':' '$7!="/sbin/nologin" test.txt
!=代表不等于。第七段不等于/sbin/nologin的打印出来,针对所有行。需注意带/需要用双引号引起来
实例:
1.
[root@afeilinux-01 awk]# awk -F ':' '{print $1}' test.txt 需注意$要写在数字前面,$1表示第一段
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
sshd
postfix
chrony
tss
mysql
php-fpm
apache
rpc
rpcuser
nfsnobody
virftp
pure-ftp
nginx
zabbix
2.
[root@afeilinux-01 awk]# cat 1.txt 先看一下这个文件
111 222
aaa bbb
[root@afeilinux-01 awk]# awk '{print $1}' 1.txt 默认以空格作为间隔
111
aaa
3.
[root@afeilinux-01 awk]# awk '{print $0}' test.txt 打印所有行。类似于cat
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
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
mysql:x:1000:1000::/home/mysql:/bin/bash
php-fpm:x:1001:1001::/home/php-fpm:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
virftp:x:1002:1002::/home/virftp:/sbin/nologin
pure-ftp:x:1010:1010::/home/pure-ftp:/bin/bash
nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin
zabbix:x:996:994:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
4.
[root@afeilinux-01 awk]# awk -F ':' '{print $1,$2,$3}' test.txt 这里指定了间隔为:
root x 0
bin x 1
daemon x 2
adm x 3
lp x 4
sync x 5
shutdown x 6
halt x 7
mail x 8
operator x 11
games x 12
ftp x 14
nobody x 99
systemd-network x 192
dbus x 81
polkitd x 999
sshd x 74
postfix x 89
chrony x 998
tss x 59
mysql x 1000
php-fpm x 1001
apache x 48
rpc x 32
rpcuser x 29
nfsnobody x 65534
virftp x 1002
pure-ftp x 1010
nginx x 997
zabbix x 996
5.
[root@afeilinux-01 awk]# awk -F ':' '{print $1"#"$2"-"$3"?"}' test.txt 指定第一二三段以什么符号列出来
#-?
root#x-0?
bin#x-1?
daemon#x-2?
adm#x-3?
lp#x-4?
sync#x-5?
shutdown#x-6?
halt#x-7?
mail#x-8?
operator#x-11?
games#x-12?
ftp#x-14?
nobody#x-99?
systemd-network#x-192?
dbus#x-81?
polkitd#x-999?
sshd#x-74?
postfix#x-89?
chrony#x-998?
tss#x-59?
mysql#x-1000?
php-fpm#x-1001?
apache#x-48?
rpc#x-32?
rpcuser#x-29?
nfsnobody#x-65534?
virftp#x-1002?
pure-ftp#x-1010?
nginx#x-997?
zabbix#x-996?
#-?
6.
[root@afeilinux-01 awk]# awk '/00/' test.txt 因针对所有,所以直接写就好
games:x:12:100:games:/usr/games:/sbin/nologin
mysql:x:1000:1000::/home/mysql:/bin/bash
php-fpm:x:1001:1001::/home/php-fpm:/bin/bash
virftp:x:1002:1002::/home/virftp:/sbin/nologin
7.
[root@afeilinux-01 awk]# awk -F ':' '$1 ~ /oo/' test.txt 需要加 ~
root:x:0:0:root:/root:/bin/bash
8.
[root@afeilinux-01 awk]# awk -F ':' '$1 ~ /o+/' test.txt 一个o或两个0的
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
operator:x:11:0:operator:/root:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
9.
[root@afeilinux-01 awk]# awk -F ':' '/root/ {print $1,$2} /sshd/ {print $1,$3,$4}' test.txt
root x
operator x
sshd 74 74
10.
[root@afeilinux-01 awk]# awk -F ':' '/bin|sbin/ {print $0}' test.txt 搜索关键词,要加/ /
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
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
mysql:x:1000:1000::/home/mysql:/bin/bash
php-fpm:x:1001:1001::/home/php-fpm:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
virftp:x:1002:1002::/home/virftp:/sbin/nologin
pure-ftp:x:1010:1010::/home/pure-ftp:/bin/bash
nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin
zabbix:x:996:994:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
11.
[root@afeilinux-01 awk]# awk -F ':' '$3==0' test.txt
root:x:0:0:root:/root:/bin/bash
[root@afeilinux-01 awk]# awk -F ':' '$3==0 {print $0}' test.txt 加了{print $0},针对所有段
root:x:0:0:root:/root:/bin/bash
dadain:x:0:1:bin:/bin:/sbin/NOLogin
on:/sbin:0:/sbin/nologin
halt:x:0:0:halt:/sbin:/sbin/halt
nobody:x:0:99:Noboooooooody:/:/sbin/nol:oo1:0gin
12.
[root@afeilinux-01 awk]# awk -F ':' '$3>=1000' test.txt 加不加{print $0}其实是一样的
root:x:0:0:root:/root:/bin/bash
[root@afeilinux-01 awk]# awk -F ':' '$3>=1000' test.txt
mysql:x:1000:1000::/home/mysql:/bin/bash
php-fpm:x:1001:1001::/home/php-fpm:/bin/bash
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
virftp:x:1002:1002::/home/virftp:/sbin/nologin
pure-ftp:x:1010:1010::/home/pure-ftp:/bin/bash
[root@afeilinux-01 awk]# awk -F ':' '$3>=1000 {print $0}' test.txt 加不加{print $0}其实是一样的
root:x:0:0:root:/root:/bin/bash
[root@afeilinux-01 awk]# awk -F ':' '$3>=1000' test.txt
mysql:x:1000:1000::/home/mysql:/bin/bash
php-fpm:x:1001:1001::/home/php-fpm:/bin/bash
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
virftp:x:1002:1002::/home/virftp:/sbin/nologin
pure-ftp:x:1010:1010::/home/pure-ftp:/bin/bash
[root@afeilinux-01 awk]# awk -F ':' '$3>=1000 {print $0}' test.txt
mysql:x:1000:1000::/home/mysql:/bin/bash
php-fpm:x:1001:1001::/home/php-fpm:/bin/bash
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
virftp:x:1002:1002::/home/virftp:/sbin/nologin
pure-ftp:x:1010:1010::/home/pure-ftp:/bin/bash
13.
[root@afeilinux-01 awk]# awk -F ':' '$3>="1000" {print $0}' test.txt 会以阿斯玛的顺序排列起来
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
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
mysql:x:1000:1000::/home/mysql:/bin/bash
php-fpm:x:1001:1001::/home/php-fpm:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
virftp:x:1002:1002::/home/virftp:/sbin/nologin
pure-ftp:x:1010:1010::/home/pure-ftp:/bin/bash
nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin
zabbix:x:996:994:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
14.
[root@afeilinux-01 awk]# awk -F ':' '$7!="/sbin/nologin"' test.txt !=代表不等于
root:x:2000:0:root:/root:/bin/bash
241:rnjo:41234123
asdas:r3o:asda
dadain:x:1300:1:bin:/bin:/sbin/NOLogin
daemon:x:2:2:daem
dfasd:r4134o:reqreqw
sdasdas:rgo:
----------------------------------------------------------------------------------------------------------------------------------------------------
9.6 awk下:
除了数字、字符之外,还可以两个字段,相互的去比较
以下用到的 print需要的内置变量
OFS print的时候指定打印的分割符 (详细见~4.)
NR 表示行,print的时候打印行,并显示行号。跟grep -n差不多(详细见~5.)
NF 表示段,print的时候打印段,并显示段号(详细见~5.)
~1. awk -F ':' '$3<$4' test.txt
以:为间隔,$3小于$4的可直接这样写
awk -F ':' '$3==$4' test.txt
$3等于$4的
~2. awk -F ':' '$3>"5" && $3<"7"' test.txt
也可以多额命令一起满足
$3大于5小于7的,并且数字5和7 要用双引号引起来
注意此时使用了双引号,根据阿斯玛定律匹配
~3. awk -F ':' '$3<1000 || $7=="/sbin/nologin"' test.txt
多项同时满足
$3小于1000,和 $7等于/sbin/nologin的
注意此时,数字没有双引号,只代表数字本身,非阿斯玛
awk -F ':' '$3<1000 ||$7 ~ /bash/' test.txt
~ 表示指定带有bash这个字符的
满足前面的,和第7段带有bsah,需用/bash/
~4. awk -F ':' '{OFS="#"} $3<1000 || $7 ~ /bash/ {print $1,$3,$7}' test.txt
{OFS="#"} 表示列出的以#为分隔符
$3<1000 || $7 ~ /bash/ 然后在写条件
{print $1,$3,$7} 然后在写print语句
该表示,满足该条件、以#号为分隔符、打印出第一三七段
也可以不写需满足的条件
awk -F ':' '{OFS="#" } {print $1,$2,$3}' test.txt
以上的正规写法为:
awk -F ':' '{OFS="#"} {if ($3<1000 || $7 ~ /bash/) {print $1,$3,$7}}' test.txt
if为判断的意思
满足条件的需加if,并将后面的条件用括号括起来,然后在把if语句和后面的print语句的花括号一起用花括号括起来
~5. awk -F ':' '{print NR"#" $0}' test.txt
awk -F ':' '{print NF"#" $o}' test.txt
awk -F ':' 'NR<=10' test.txt
可作为判断条件,行小于等于10,也就是显示10行。类似于sed -n '1,10'p
awk -F ':' 'NR<=10 && /root|sync/' test.txt
也可加&&,满足多项条件
前十行并且带有root或者sync的
NR和NF的使用方法一样,就不做演练了
~6. awk -F ':' '$1="root'' test.txt
一个等于号为赋值
awk -F ':' '$1=="root"' test.txt
两个等于号为等于,也就是真能把他匹配出来
~7. awk -F ':' '{(tot=tot+$3)}; END {print tot}' test.txt
以为这个文件所有的第三段求和
tot表示一个循环,默认是0.tot+$3即表示,第3段循环相加。并赋值这个循环为tot。最后,在print tot
实例:
1.
[root@afeilinux-01 awk]# awk -F ':' '$3<$4' test.txt
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@afeilinux-01 awk]# awk -F ':' '$3==$4' test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
mysql:x:1000:1000::/home/mysql:/bin/bash
php-fpm:x:1001:1001::/home/php-fpm:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
virftp:x:1002:1002::/home/virftp:/sbin/nologin
pure-ftp:x:1010:1010::/home/pure-ftp:/bin/bash
2.
[root@afeilinux-01 awk]# awk -F ':' '$3>"1" && $3<"7"' test.txt
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
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
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
mysql:x:1000:1000::/home/mysql:/bin/bash
php-fpm:x:1001:1001::/home/php-fpm:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
virftp:x:1002:1002::/home/virftp:/sbin/nologin
pure-ftp:x:1010:1010::/home/pure-ftp:/bin/bash
3.
[root@afeilinux-01 awk]# awk -F ':' '$3<1000 || $7=="/sbin/nologin"' test.txt
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
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
virftp:x:1002:1002::/home/virftp:/sbin/nologin
nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin
zabbix:x:996:994:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
[root@afeilinux-01 awk]# awk -F ':' '$3>1000 || $7 ~ /gin/' test.txt 指定第7段带有gin,要用 ~
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
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
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
php-fpm:x:1001:1001::/home/php-fpm:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
virftp:x:1002:1002::/home/virftp:/sbin/nologin
pure-ftp:x:1010:1010::/home/pure-ftp:/bin/bash
nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin
zabbix:x:996:994:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
4.
[root@afeilinux-01 awk]# awk -F ':' '{OFS="#"} $3<1000 || $7 ~ /bash/ {print $1,$3,$7}' test.txt 顺序不要写错
##
root#0#/bin/bash
bin#1#/sbin/nologin
daemon#2#/sbin/nologin
adm#3#/sbin/nologin
lp#4#/sbin/nologin
sync#5#/bin/sync
shutdown#6#/sbin/shutdown
halt#7#/sbin/halt
mail#8#/sbin/nologin
operator#11#/sbin/nologin
games#12#/sbin/nologin
ftp#14#/sbin/nologin
nobody#99#/sbin/nologin
systemd-network#192#/sbin/nologin
dbus#81#/sbin/nologin
polkitd#999#/sbin/nologin
sshd#74#/sbin/nologin
postfix#89#/sbin/nologin
chrony#998#/sbin/nologin
tss#59#/sbin/nologin
mysql#1000#/bin/bash
php-fpm#1001#/bin/bash
apache#48#/sbin/nologin
rpc#32#/sbin/nologin
rpcuser#29#/sbin/nologin
pure-ftp#1010#/bin/bash
nginx#997#/sbin/nologin
zabbix#996#/sbin/nologin
##
5.
[root@afeilinux-01 awk]# awk -F ':' '{print NR"#" $0}' test.txt NR后不加“#‘就代表不指定行号后的间隔符
1#root:x:2000:0:root:/root:/bin/bash
2#241:rnjo:41234123
3#asdas:r3o:asda
4#dadain:x:1300:1:bin:/bin:/sbin/NOLogin
5#daemon:x:4:6:daem
[root@afeilinux-01 awk]# awk -F ':' '{print NF"#" $o}' test.txt NF后不加“#‘就代表不指定段号的间隔符
0#
7#root:x:0:0:root:/root:/bin/bash
7#bin:x:1:1:bin:/bin:/sbin/nologin
7#daemon:x:2:2:daemon:/sbin:/sbin/nologin
7#adm:x:3:4:adm:/var/adm:/sbin/nologin
7#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7#sync:x:5:0:sync:/sbin:/bin/sync
7#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
7#halt:x:7:0:halt:/sbin:/sbin/halt
7#mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
7#operator:x:11:0:operator:/root:/sbin/nologin
7#games:x:12:100:games:/usr/games:/sbin/nologin
7#ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
7#nobody:x:99:99:Nobody:/:/sbin/nologin
7#systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
7#dbus:x:81:81:System message bus:/:/sbin/nologin
7#polkitd:x:999:998:User for polkitd:/:/sbin/nologin
7#sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
7#postfix:x:89:89::/var/spool/postfix:/sbin/nologin
7#chrony:x:998:996::/var/lib/chrony:/sbin/nologin
7#tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
7#mysql:x:1000:1000::/home/mysql:/bin/bash
7#php-fpm:x:1001:1001::/home/php-fpm:/bin/bash
7#apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
7#rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
7#rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
7#nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
7#virftp:x:1002:1002::/home/virftp:/sbin/nologin
7#pure-ftp:x:1010:1010::/home/pure-ftp:/bin/bash
7#nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin
7#zabbix:x:996:994:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
0#
[root@afeilinux-01 awk]# awk -F ':' 'NR<=5' test.txt 前五行的意思
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
[root@afeilinux-01 awk]# awk -F ':' 'NR<=10 && /root|sync/' test.txt 加&&的用法
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
6.
[root@afeilinux-01 awk]# awk -F ':' '$1=="root"' test.txt 两个==即等于,也就是匹配出来
root:x:0:0:root:/root:/bin/bash
[root@afeilinux-01 awk]# awk -F ':' '$1="wx"' test.txt 一个=即为赋值,$1赋值为wx
会发现分隔符没有了,定义OPS就可以了
wx
wx x 0 0 root /root /bin/bash
wx x 1 1 bin /bin /sbin/nologin
wx x 2 2 daemon /sbin /sbin/nologin
wx x 3 4 adm /var/adm /sbin/nologin
wx x 4 7 lp /var/spool/lpd /sbin/nologin
wx x 5 0 sync /sbin /bin/sync
wx x 6 0 shutdown /sbin /sbin/shutdown
wx x 7 0 halt /sbin /sbin/halt
wx x 8 12 mail /var/spool/mail /sbin/nologin
wx x 11 0 operator /root /sbin/nologin
wx x 12 100 games /usr/games /sbin/nologin
wx x 14 50 FTP User /var/ftp /sbin/nologin
wx x 99 99 Nobody / /sbin/nologin
wx x 192 192 systemd Network Management / /sbin/nologin
wx x 81 81 System message bus / /sbin/nologin
wx x 999 998 User for polkitd / /sbin/nologin
wx x 74 74 Privilege-separated SSH /var/empty/sshd /sbin/nologin
wx x 89 89 /var/spool/postfix /sbin/nologin
wx x 998 996 /var/lib/chrony /sbin/nologin
wx x 59 59 Account used by the trousers package to sandbox the tcsd daemon /dev/null /sbin/nologin
wx x 1000 1000 /home/mysql /bin/bash
wx x 1001 1001 /home/php-fpm /bin/bash
wx x 48 48 Apache /usr/share/httpd /sbin/nologin
wx x 32 32 Rpcbind Daemon /var/lib/rpcbind /sbin/nologin
wx x 29 29 RPC Service User /var/lib/nfs /sbin/nologin
wx x 65534 65534 Anonymous NFS User /var/lib/nfs /sbin/nologin
wx x 1002 1002 /home/virftp /sbin/nologin
wx x 1010 1010 /home/pure-ftp /bin/bash
wx x 997 995 Nginx web server /var/lib/nginx /sbin/nologin
wx x 996 994 Zabbix Monitoring System /var/lib/zabbix /sbin/nologin
wx
[root@afeilinux-01 awk]# awk -F ':' '{OFS="#"} $1="wx"' test.txt 定义OFS,设置分隔符
wx
wx#x#0#0#root#/root#/bin/bash
wx#x#1#1#bin#/bin#/sbin/nologin
wx#x#2#2#daemon#/sbin#/sbin/nologin
wx#x#3#4#adm#/var/adm#/sbin/nologin
wx#x#4#7#lp#/var/spool/lpd#/sbin/nologin
wx#x#5#0#sync#/sbin#/bin/sync
wx#x#6#0#shutdown#/sbin#/sbin/shutdown
wx#x#7#0#halt#/sbin#/sbin/halt
wx#x#8#12#mail#/var/spool/mail#/sbin/nologin
wx#x#11#0#operator#/root#/sbin/nologin
wx#x#12#100#games#/usr/games#/sbin/nologin
wx#x#14#50#FTP User#/var/ftp#/sbin/nologin
wx#x#99#99#Nobody#/#/sbin/nologin
wx#x#192#192#systemd Network Management#/#/sbin/nologin
wx#x#81#81#System message bus#/#/sbin/nologin
wx#x#999#998#User for polkitd#/#/sbin/nologin
wx#x#74#74#Privilege-separated SSH#/var/empty/sshd#/sbin/nologin
wx#x#89#89##/var/spool/postfix#/sbin/nologin
wx#x#998#996##/var/lib/chrony#/sbin/nologin
wx#x#59#59#Account used by the trousers package to sandbox the tcsd daemon#/dev/null#/sbin/nologin
wx#x#1000#1000##/home/mysql#/bin/bash
wx#x#1001#1001##/home/php-fpm#/bin/bash
wx#x#48#48#Apache#/usr/share/httpd#/sbin/nologin
wx#x#32#32#Rpcbind Daemon#/var/lib/rpcbind#/sbin/nologin
wx#x#29#29#RPC Service User#/var/lib/nfs#/sbin/nologin
wx#x#65534#65534#Anonymous NFS User#/var/lib/nfs#/sbin/nologin
wx#x#1002#1002##/home/virftp#/sbin/nologin
wx#x#1010#1010##/home/pure-ftp#/bin/bash
wx#x#997#995#Nginx web server#/var/lib/nginx#/sbin/nologin
wx#x#996#994#Zabbix Monitoring System#/var/lib/zabbix#/sbin/nologin
wx
7.
[root@afeilinux-01 awk]# awk -F ':' '{(tot=tot+$3)}; END {print tot}' test.txt 第三段求和 ,tot的用法
74313