awk
#############################2021.12.7################################################
/regex/
expression
parttern1,parttern2
BEGIN #先执行BEGIN然后再执行{action}
END #执行玩{action}再执行END
如果使用数字不加双引号
[root@rocky tmp]# cat /tmp/sn | awk '{print 3*3}'
9
9
awk 显示文本
$0代表没有被分割,整行
命令格式
awk [option] 'script' file1 file2
awk [option] 'pattern{action}' file1 file2
parttern 关系表达式,结果为“真”才会被处理
真:结果为非0值,非空字符串
假:结果为空字符串或0值
parttern表示方法 BEGIN{} END{}
用文件字符与正则表达式元字符描述的条件,
1.正则表达式
awk -F: '/^(r|s)/{print $1}'
awk -F: '!/^#/{print $1}' 取反
awk -F" +|%" 多分隔符
awk -F"[[ ]" [[ ](外边的中括号代表[或者空格的意思)
2.运算
+ - * / % …… **
3.赋值
++ x++ x=x+1
-- x-- x=x-1
4.比较操作符
x < y
x <= y
x > y
x >=y
x == y
x != y
x ~ y x为字符串,y为模式,如果x可以被模式匹配条件为真, 例 "abc" ~ ^a
x !~ y
5.逻辑关系符
&&
||
6.指定范围
awk -F: '$3==0,$7~"nologin$"{print $1}' /etc/passwd
action
FS 等于-F
OFS 指定显示的分割标记
RS 指定已什么来分割行
ORS 指定
NR 记录awk所处理的文本的行数,如果有多个文件,所以文件统一进行计数 #这俩处理多个文件才会有区别
FNR 记录awk所处理的文本的行数,如果有多个文件,分别记录 #这俩处理多个文件才会有区别
NF 记录awk正在处理的当前行被分割成几个字段
print
printf 指定输出项的格式,格式必须写
格式 printf format,item1,item2
要点
printf输出时必须制定format格式
printf语句不会自动换行,需要加\n
format=%修饰符s
%c 显示单个字符
%d,%i 十进制整数
%f 显示浮点数
%g,%G 以科学计数法的格式或者浮点数的格式显示数值
%s 显示字符串
%u 无符号证书
%% 显示%自身
修饰符
N 显示宽度,N为数字
- 左对齐,默认右对齐
+ 显示数值符号
option选项
-F 指定文件分割符
-v 变量名="变量"
function 函数
length() 例 awk -F: '{if(length($1)<=4) print $1}' /etc/passwd
system() 条用linux命令 例 awk 'BEGIN{system("hostname")}'
IF
if(condition){statement;…}[else statement]
if(condition1){statement1}else if(condition2){statement2}else if(condition3)
{statement3}...... else {statementN}
while
while (condition) {statement;…}
条件“真”,进入循环;条件“假”,退出循环
使用场景:
对一行内的多个字段逐一类似处理时使用
对数组中的各元素逐一处理时使用
for(expr1;expr2;expr3) {statement;…}
------------------------------------------------------------------------------------------
awk -F: '{if($3>=1000)print $1,$3}' /etc/passwd
awk -F: '{if($3<=100){print "<=100",$3}else if ($3<=1000) {print "<=1000",$3}
else{print ">=1000",$3}}' /etc/passwd
awk -F: '{if($NF=="/bin/bash") print $1}' /etc/passwd
awk '{if(NF>5) print $0}' /etc/fstab
awk -F: '{if($3>=1000) {printf "Common user: %s\n",$1} else {printf "root or
Sysuser: %s\n",$1}}' /etc/passwd
awk -F: '{if($3>=1000) printf "Common user: %s\n",$1; else printf "root or
Sysuser: %s\n",$1}' /etc/passwd
df -h|awk -F% '/^\/dev\/sd/{print $1}'| awk '$NF>=80{print $1,$5}'
df | awk -F"[[:space:]]+|%" '/^\/dev\/sd/{if($5>80)print $1,$5}'
[root@centos8 ~]#df | awk -F' +|%' '/^\/dev\/sd/{if($5>=10)print $1,$5}'
/dev/sda1 15
awk 'BEGIN{ test=100;if(test>90){print "very good"}
else if(test>60){ print "good"}else{print "no pass"}}'
------------------------------------------------------------------------------------------
[root@rocky tmp]# awk -F: '{if($3%2!=0) next; print $1,$3}' /etc/passwd
next取模2不等于0就是1(奇数的意思) $3是奇数的next跳过不打印,打印偶数行
root 0
daemon 2
lp 4
shutdown 6
mail 8
games 12
ftp 14
nobody 65534
polkitd 998
sssd 996
cockpit-wsinstance 994
sshd 74
avahi 70
saslauth 992
tcpdump 72
apache 48
tom 1000
------------------------------------------------------------------------------------------
[root@rocky tmp]# cat sn
SN 111
MODE AAA
PN !!!
NN ,,,
6gfdgfdgfd
SN 222
MODE BBB
PN @@@
NN ...
sdfsdfsdfsd
SN 333
MODE CCC
PN ###
NN ///
sdfsdfsdfad
SN 444
MODE DDD
PN $$$
NN ;;;
asdasdasgdf
###
[root@rocky tmp]# grep "SN\|MODE\|PN\|NN" sn | awk 'NR%4{printf "%s ",$0;next;}1'
NR%4 取模4 就剩下1,2,3了 16行只打印 123 567 91011 131415行,然后1为真打印全部行,next跳过1,2,3余数的行,剩下4,8,12,16行,printf是不换行的,next结束循环,进入下一行处理,触发条件是4,1是打印除了NR%4以外的行,所以1打印4行的时候会触发next换行
SN 111 MODE AAA PN !!! NN ,,,
SN 222 MODE BBB PN @@@ NN ...
SN 333 MODE CCC PN ### NN ///
SN 444 MODE DDD PN $$$ NN ;;;
###
[root@rocky tmp]# egrep "SN|MODE|PN|NN" sn | awk 'NR%2!=0{printf "%s \n",$0;}'
SN 111
PN !!!
SN 222
PN @@@
SN 333
PN ###
SN 444
PN $$$
[root@rocky tmp]# egrep "SN|MODE|PN|NN" sn | awk 'NR%2!=0{next;printf "%s \n",$0;}'
[root@rocky tmp]# egrep "SN|MODE|PN|NN" sn | awk 'NR%2!=0{next;printf "%s \n",$0;}1'
MODE AAA
NN ,,,
MODE BBB
NN ...
MODE CCC
NN ///
MODE DDD
NN ;;;
------------------------------------------------------------------------------------------
root@ubuntu2004:~# df | awk -F'[ %]+' '/\/dev\/.d./{if($5>=10){print $1,$5}}'
/dev/sda3 22
root@ubuntu2004:~# df | awk -F' +|%' '/^\/dev\/sd/{if($5>=10)print $1,$5}'
/dev/sda3 22
root@ubuntu2004:~# df | awk -F'[[:space:]]+|%' '/^\/dev\/sd/{if($5>=10)print
$1,$5}'
/dev/sda3 22
[root@centos8 ~]#df | awk -F"[ %]+" '/^\/dev\/sd/{if($(NF-1)>10)print $(NF-1)"
full";else {print $(NF-1)" OK"}}'
3 OK
1 OK
13 full
[root@centos8 ~]#df | awk -F"[ %]+" '/^\/dev\/sd/{if($(NF-1)>10){print $(NF-1)"
full"}else {print $(NF-1)" OK"}}'
3 OK
1 OK
13 full
------------------------------------------------------------------------------------------
root@ubuntu2004:~# awk 'BEGIN{sum=0;for(i=1;i<=100;i++){sum+=i};print sum}'
5050
root@ubuntu2004:~# for((i=1,sum=0;i<=100;i++));do let sum+=i;done;echo $sum
5050
[root@centos8 ~]#awk 'BEGIN{total=0;for(i=1;i<=100;i++){total+=i};print total}'
5050
------------------------------------------------------------------------------------------
[root@rocky ~]# awk 'BEGIN{num=50;if(num>=80){print "good"}else{print "laji"}}'
laji
[root@rocky ~]# awk 'BEGIN{num=90;if(num>=80){print "good"}else{print "laji"}}'
good
------------------------------------------------------------------------------------------
[root@rocky ~]# awk -F: '{if($3<=999){print $3,$1,"is system"}else{print $3,$1}}' /etc/passwd
0 root is system
1 bin is system
...
1000 tom
------------------------------------------------------------------------------------------
[root@rocky tmp]# seq 10 | awk 'i=!i' 本来i没有值,然后取反为真,打印1,然后i为真取反等于假,不打印2,3的时候 假i再取反为真,就打印3
1
3
5
7
9
------------------------------------------------------------------------------------------
[root@rocky tmp]# cat > score <<EOF
> name score
> xiaoming 100
> xiaohong 90
> xiaoqiang 80
> xiaowang 55
> EOF
[root@rocky tmp]# awk 'NR>=2{score=$2;if(score>=90){print $1,"goog"}else if(score>=80){print $1,"优秀"}else{print $1,"no pass"}}' score
xiaoming goog
xiaohong goog
xiaoqiang 优秀
xiaowang no pass
------------------------------------------------------------------------------------------
[root@rocky tmp]# awk 'BEGIN{i=1;sum=0;while(i<=20){sum+=i;i++};print sum}'
210
[root@rocky tmp]# awk 'BEGIN{i=1;sum=0;while(i<=20){sum=sum+i;i++};print sum}'
210
------------------------------------------------------------------------------------------
[root@rocky tmp]# sum=0; for i in `seq 20`;do let sum+=i;done ;echo $sum
210
[root@rocky tmp]# sum=0; for ((i=1;i<=20;i++));do let sum+=i;done ;echo $sum
210
------------------------------------------------------------------------------------------
[root@rocky tmp]# time (sum=0; for ((i=1;i<=1000000;i++));do let sum+=i;done ;echo $sum)
500000500000
real 0m2.675s
user 0m2.661s
sys 0m0.002s
[root@rocky tmp]# time (awk 'BEGIN{sum=0;i=1;while(i<=1000000){sum+=i;i++};print sum}')
500000500000
real 0m0.042s
user 0m0.041s
sys 0m0.001s
[root@rocky tmp]# time (seq -s+ 1000000 |bc)
500000500000
real 0m0.223s
user 0m0.122s
sys 0m0.119s
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
[root@111 ~]# awk -F: '{print "hello",$1}' /etc/passwd
hello root
hello bin
hello daemon
------------------------------------------------------------------------------------------
[root@rocky ~]# awk '0' /etc/passwd
[root@rocky ~]# awk '""' /etc/passwd
[root@rocky ~]# awk '1' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@rocky ~]# awk '!1' /etc/passwd
[root@rocky ~]# awk '!0' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
------------------------------------------------------------------------------------------
[root@rocky ~]# seq 5 | awk 'i=!i' 本来i没有值为假,但是i不等于i,导致i为真,打印结果,然后2的时候i为真取反等于假所以不打印2,以此类推
1
3
5
[root@rocky ~]# seq 5 | awk '!(i=!i)' 取上边的反值
2
4
[root@rocky ~]# seq 5 | awk 'i'
[root@rocky ~]# seq 5 | awk -v i=1 'i' 赋值i=1 所以i为真 打印
1
2
3
4
5
[root@rocky ~]# seq 5 | awk -v i=0 'i' 赋值i=0 所以i为假 不打印
------------------------------------------------------------------------------------------
[root@rocky tmp]# awk -v FS=: '{print $1FS$7}' /etc/passwd
root:/bin/bash
bin:/sbin/nologin
------------------------------------------------------------------------------------------
[root@rocky ~]# seq 10 | awk 'NR<=7 && NR>=2' 范围取值
2
3
4
5
6
7
------------------------------------------------------------------------------------------
[root@rocky ~]# awk '/^b/,/^h/' /etc/passwd 范围取值
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
------------------------------------------------------------------------------------------
[root@rocky tmp]# awk -v RS=";" -v FS=" " '{print $1}' 123
a
1
x
[root@rocky tmp]# cat 123
a b c;1 2 3;x y z
------------------------------------------------------------------------------------------
[root@rocky tmp]# awk -F: '{printf "%-30s %30s\n",$1,$3 }' /etc/passwd
root 0
bin 1
daemon 2
------------------------------------------------------------------------------------------
[root@rocky tmp]# awk -F: 'BEGIN{print "----------------haha----------------"}{printf "haha:%-20s %2s\n",$1,$3 }' /etc/passwd
----------------haha----------------
haha:root 0
haha:bin 1
------------------------------------------------------------------------------------------
[root@rocky tmp]# awk -F: 'BEGIN{print "----------------haha----------------"}{printf "haha:%-20s %2s\n",$1,$3 }END{print "--------------------hehe----------------"}' /etc/passwd
----------------haha----------------
haha:root 0
haha:bin 1
...
haha:apache 48
--------------------hehe----------------
------------------------------------------------------------------------------------------
[root@rocky tmp]# awk -F: 'BEGIN{print "----------------haha----------------"}{printf "haha:%-20s |%2s|\n",$1,$3 }END{print "--------------------hehe----------------"}' /etc/passwd
----------------haha----------------
haha:root | 0|
haha:bin | 1|
...
haha:apache |48|
--------------------hehe----------------
------------------------------------------------------------------------------------------
[root@rocky tmp]# awk -v cls="m48" 'BEGIN{print cls;cls="m49";print cls}'
m48
m49
------------------------------------------------------------------------------------------
[root@rocky tmp]# awk -F":" -v OFS=- '{print $1,$7}' /etc/passwd
root-/bin/bash
bin-/sbin/nologin
------------------------------------------------------------------------------------------
df -Th | sed '1d' |awk '{print "disk",$1,"mount_point",$7,"total_size",$3,"free_size",$6}'
------------------------------------------------------------------------------------------
[root@111 ~]# head -1 /etc/passwd | awk 'BEGIN{FS=":"}{print $1,$7}' 等同于-F:
------------------------------------------------------------------------------------------
[root@111 ~]# head -1 /etc/passwd | awk 'BEGIN{FS=":";OFS="---"}{print $1,$7}' 指定分割后的值用---显示
root---/bin/bash
[root@111 ~]# head -1 /etc/passwd | awk -F: 'BEGIN{OFS="---"}{print $1,$7}' 指定分割后的值用---显示
root---/bin/bash
------------------------------------------------------------------------------------------
[root@111 ~]# ifconfig | awk 'NR==2{print $2}'
192.168.1.106
------------------------------------------------------------------------------------------
[root@rocky ~]# df | awk -F" +|%" '{print $5}' 多分隔符表示
Use
0
0
2
0
14
83
0
------------------------------------------------------------------------------------------
[root@111 ~]# cat /etc/passwd | awk -F: '{print "第",NR,"行",$1,$7}'
第 1 行 root /bin/bash
第 2 行 bin /sbin/nologin
------------------------------------------------------------------------------------------
[root@111 ~]# head -2 /etc/passwd | awk -F: '{print NF}' 每行被分割7
7
7
------------------------------------------------------------------------------------------
[root@111 ~]# head -2 /etc/passwd | awk -F: '{print $NF}' 显示最后一行
/bin/bash
/sbin/nologin
------------------------------------------------------------------------------------------
[root@rocky httpd]# awk -F"[[ ]" '{print $1,$5}' access_log
192.168.1.103 11/Aug/2022:09:42:35
192.168.1.103 11/Aug/2022:09:42:35
------------------------------------------------------------------------------------------
[root@111 ~]# head -2 /etc/passwd | awk -F: -v aa="haha" '{print aa,$1}' 定义变量
haha root
haha bin
------------------------------------------------------------------------------------------
[root@111 ~]# head -2 /etc/passwd | awk -F: 'BEGIN{aa="haha"} {print aa,$1}' 定义变量
haha root
haha bin
------------------------------------------------------------------------------------------
[root@111 ~]# cat /etc/passwd|awk -F: '{printf "%-20s%-6s%-s\n",$1,$3,$6}'
root 0 /root
bin 1 /bin
daemon 2 /sbin
adm 3 /var/adm
------------------------------------------------------------------------------------------
[root@111 ~]# cat /etc/passwd|awk -F: '/^(r|s)/{print $1}' 打印r或者s开头的
root
sync
shutdown
systemd-network
sshd
rpc
rpcuser
------------------------------------------------------------------------------------------
[root@111 ~]# awk -F: '$3<=500{print $1}' /etc/passwd uid小于等于500的用户
root
bin
daemon
adm
------------------------------------------------------------------------------------------
[root@111 ~]# awk -F: '$7 ~"nologin"{print $1,$7}' /etc/passwd 显示登陆方式是nologin
bin /sbin/nologin
daemon /sbin/nologin
------------------------------------------------------------------------------------------
[root@cenots8 shell]# awk -F: '/[^nologin]$/{print $1,$7}' /etc/passwd 显示登陆方式不是nologin的
root /bin/bash
sync /bin/sync
halt /sbin/halt
magedu_00 /bin/bash
------------------------------------------------------------------------------------------
[root@111 ~]# awk -F: '$3 == 0{print $1,$7}' /etc/passwd 显示uid=0的用户
root /bin/bash
------------------------------------------------------------------------------------------
[root@111 ~]# awk -F: '$3<=999&&$3>1{print $1}' /etc/passwd 列出系统用户
daemon
adm
lp
sync
------------------------------------------------------------------------------------------
[root@111 ~]# df -Th | sed '1d' | awk '+$6>=20{printf "%-15s%-s\n", $7,$6}' 显示磁盘超过20%的
/boot 58%
/mnt 100%
------------------------------------------------------------------------------------------
[root@111 ~]# awk -F: '$3==0,$7~"nologin$"{print $1}' /etc/passwd uid是0到结尾是nologin的用户
root
bin
------------------------------------------------------------------------------------------
表头BEGIN和表尾END的使用
[root@111 ~]# head -3 /etc/passwd| awk -F: 'BEGIN{printf "%-8s%-5s%-1s\n","USER","UID","BASH"}{printf "%-8s%-5s%-1s\n",$1,$3,$7}END{print "=================gameover======================================="}'
USER UID BASH
root 0 /bin/bash
bin 1 /sbin/nologin
daemon 2 /sbin/nologin
=================gameover=======================================
[root@111 ~]#
############################################################################################
awk 逻辑控制语句
if(条件){语句;语句}else{语句1;语句2}
while i=1;while(i<=1){语句;i++}
for (变量定义;循环的条件;改变循环的条件){语句1;语句2}
for (i=1;i<=4;i++){...}
awk数组
for (变量 in 数组名称){print 数组名称[变量]}
------------------------------------------------------------------------------------------
[root@111 etc]# awk -F: '{if ($3=="0") {print $1,"is admin"}}' passwd
root is admin
------------------------------------------------------------------------------------------
[root@111 etc]# awk -F: '{if ($1=="root") print $1,"is admin"; else print $1,"is yonghu"}' passwd
root is admin
bin is yonghu
daemon is yonghu
------------------------------------------------------------------------------------------
[root@111 etc]# awk -F: '{if ($3>=500) {print $1}}' passwd | wc -l
20
------------------------------------------------------------------------------------------
[root@rocky tmp]# awk -F: '{if ($7=="/sbin/nologin"){print $7,"is no"}}' /etc/passwd
/sbin/nologin is no
------------------------------------------------------------------------------------------
[root@111 etc]# awk -F: -v count=0 '{if ($3>=500) {count++}}END{print "大于等于500的用户有;"count}' passwd
大于等于500的用户有;20
------------------------------------------------------------------------------------------
[root@111 shell]# awk -F: -v num1=0 -v num2=0 '/bash$/ || /nologin$/ {if ($7=="/bin/bash"){num1++}else{num2++}}END{print "bash用户有",num1"\n""nologin用户有",num2 }' /etc/passwd
bash用户有 17
nologin用户有 24
[root@111 etc]# awk -F: -v bs=0 -v ns=0 '/bash$/ || /nologin$/{if($7=="/bin/bash")bs++;else ns++}END{print bs,ns}' passwd
17 24
------------------------------------------------------------------------------------------
[root@111 shell]# head -2 /etc/passwd | awk '{i=1;while(i<=3){print $0 i++}}' 输出3遍
root:x:0:0:root:/root:/bin/bash1
root:x:0:0:root:/root:/bin/bash2
root:x:0:0:root:/root:/bin/bash3
bin:x:1:1:bin:/bin:/sbin/nologin1
bin:x:1:1:bin:/bin:/sbin/nologin2
bin:x:1:1:bin:/bin:/sbin/nologin3
------------------------------------------------------------------------------------------
[root@111 shell]# awk 'BEGIN{print length("hahaha")}' /etc/passwd 统计print显示的字符数
6
------------------------------------------------------------------------------------------
显示字符大于4的
[root@111 shell]# head -3 /etc/passwd | awk -F: '{i=1;while(i<=NF){if(length($i)>4){print $i};i++}}'
/root
/bin/bash
/sbin/nologin
daemon
daemon
/sbin
/sbin/nologin
[root@111 shell]# head -3 /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@111 shell]#
------------------------------------------------------------------------------------------
显示字符大于5的并且计算数量显示到END
[root@111 shell]# awk -v count=0 '{i=1;while(i<=NF){if(length($i)>5){print $i;count ++};i++}}END{print count}' awk
------------------------------------------------------------------------------------------
显示字符大于5的并且计算数量显示到END把标点符号去除
[root@111 shell]# sed 's/[[:punct:]]//g' awk|awk -v count=0 '{i=1;while(i<=NF){if(length($i)>5){print $i;count ++};i++}}END{print count}'
------------------------------------------------------------------------------------------
显示字符大于5的
[root@111 shell]# sed 's/[[:punct:]]//g' awk|awk '{for(i=1;i<=NF;i++){if(length($i)>5){print $i}}}'
------------------------------------------------------------------------------------------
横行变竖行
[root@wang ~]# awk '{for (i=1;i<=NF;i++){print $i}}' sn
qwe
qwe
qw
e
qw
ewq
eq
wjkel
wqjkl
ejwqkl
jkwlq
jeklwq
jkle
jklqwj
lk
[root@wang ~]# cat sn
qwe qwe qw e qw ewq eq wjkel wqjkl ejwqkl jkwlq jeklwq jkle jklqwj lk
[root@wang ~]#
------------------------------------------------------------------------------------------
[root@111 shell]# awk -F: '{for(i=1;i<=4;i++){print $i}}' /etc/passwd
root
x
0
0
bin
x
1
1
------------------------------------------------------------------------------------------
各个shell有多少次
[root@111 ~]# awk -F: '{print $7}' /etc/passwd | sort | uniq -c
17 /bin/bash
1 /bin/sync
1 /sbin/halt
24 /sbin/nologin
1 /sbin/shutdown
[root@111 ~]# awk -F: '{shell[$7]++}END{for(i in shell){print i,shell[i]}}' /etc/passwd
/bin/sync 1
/bin/bash 17
/sbin/nologin 24
/sbin/halt 1
/sbin/shutdown 1
------------------------------------------------------------------------------------------
查看访问量
[root@111 www.log]# awk '{acc[$1]++}END{for(i in acc){print i,acc[i]}}' access_log
192.168.1.102 605
[root@111 www.log]# grep '192.168.1.102' access_log | wc -l
605
[root@111 www.log]# grep '.*24/Nov/2021:20:3[0-9].*' access_log | awk '{print $1}' | sort | uniq -c
500 192.168.1.102
[root@111 www.log]# grep '24/Nov/2021' access_log | awk '{count[$1]++}END{for(i in count){print i,count[i]}}' | sort -n -k2 -r
192.168.1.102 605 -n是数字排序 -k2 是第二个值计算 -r 倒序
网站PV量
[root@111 www.log]# grep '24/Nov/2021' access_log | awk '{count[$7]++}END{for(i in count){print i,count[i]}}' | sort -n -k2 -r
/index.html 601
/a.php 2
/indel.html 1
/ 1
------------------------------------------------------------------------------------------
显示空行
[root@wang conf]# awk -v num=0 '/^$/{if(NF="0"){num++}}END{print num}' httpd.conf
37
[root@wang conf]# grep "^$" httpd.conf | wc -l
37
------------------------------------------------------------------------------------------
修改文件顺序
#!/bin/bash
file='/root/shell/bash.$$'
cat /etc/passwd | awk -F: '{print $7,$1}' > $file
mv $file 11
[root@wang shell]# bash awk1
[root@wang shell]# cat 11
/bin/bash root
/sbin/nologin bin
/sbin/nologin daemon
/sbin/nologin adm
------------------------------------------------------------------------------------------
awk -F: -v count=0 '{ if ( $3>=1000) {count++}} END{print "大于1000的用户有",count }' /etc/passwd
awk -F: '{ if ( $3>=1000) {print "大于1000的用户是:",$1}}' /etc/passwd
------------------------------------------------------------------------------------------
[root@node01 ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 93M 1.6G 8.8M 139M 1.5G
Swap: 2.0G 0B 2.0G
[root@node01 ~]# free -h | awk '/^Mem/{print $2}'
1.8G