Awk常用用法有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。awk语法:awk [option] ‘pattern {action}’ file参数选项-F 指定字段分隔符-v 定义或者修改一个awk内部的变量使用范例
[root@db1 ~]# cat -n passwd 1
root:x:0:0:root:/root:/bin/bash 2
bin:x:1:1:bin:/bin:/sbin/nologin 3
daemon:x:2:2:daemon:/sbin:/sbin/nologin 4
adm:x:3:4:adm:/var/adm:/sbin/nologin 5
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6
sync:x:5:0:sync:/sbin:/bin/sync 7
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 8
halt:x:7:0:halt:/sbin:/sbin/halt 9
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 10
operator:x:11:0:operator:/root:/sbin/nologin显示文件第5行root开发云主机域名@db1 ~]# awk ‘NR==5’ passwdlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin显示文件2-6行[root@db1 ~]# awk ‘NR==2,NR==6’ passwdbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/sync给文件显示行号awk ‘{print NR,$0}’ passwd1 root:x:0:0:root:/root:/bin/bash2 bin:x:1:1:bin:/bin:/sbin/nologin3 daemon:x:2:2:daemon:/sbin:/sbin/nologin4 adm:x:3:4:adm:/var/adm:/sbin/nologin5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6 sync:x:5:0:sync:/sbin:/bin/sync7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown8 halt:x:7:0:halt:/sbin:/sbin/halt9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin10 operator:x:11:0:operator:/root:/sbin/nologin显示文件第2行到第6行,并显示行号# awk ‘NR==2,NR==6 {print NR, $0}’ passwd2 bin:x:1:1:bin:/bin:/sbin/nologin3 daemon:x:2:2:daemon:/sbin:/sbin/nologin4 adm:x:3:4:adm:/var/adm:/sbin/nologin5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6 sync:x:5:0:sync:/sbin:/bin/sync显示文件的第一列和最后一列# awk -F “:” ‘{print $1,$NF}’ passwdroot /bin/bashbin /sbin/nologindaemon /sbin/nologinadm /sbin/nologinlp /sbin/nologinsync /bin/syncshutdown /sbin/shutdownhalt /sbin/haltmail /sbin/nologinoperator /sbin/nologin用gsub函数把文件中的/sbin/nologin替换为/bin/bashgsub(“替换对象”,”替换成什么内容”,哪一列)# awk ‘{gsub(“/sbin/nologin”,”/bin/bash”,$0); print $0}’ passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/bin/bashdaemon:x:2:2:daemon:/sbin:/bin/bashadm:x:3:4:adm:/var/adm:/bin/bashlp:x:4:7:lp:/var/spool/lpd:/bin/bashsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/bin/bashoperator:x:11:0:operator:/root:/bin/bash取出网卡的IP地址:root@db1 ~]# ifconfig ens33ens33: flags=4163
mtu 1500
inet 192.168.1.210 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::20c:29ff:fe66:629a prefixlen 64 scopeid 0x20 ether 00:0c:29:66:62:9a txqueuelen 1000 (Ethernet) RX packets 23839 bytes 2151619 (2.0 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 272 bytes 19255 (18.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0# ifconfig ens33|awk -F “(inet)|(netmask)” ‘NR==2{print $2}’192.168.1.210说明:以(inet)|(netmask)为分隔符# ifconfig ens33|awk -F ” ” ‘NR==2{print $2}’192.168.1.210说明:以空格为分隔符取出用户名# awk -F “:” ‘{print $1}’ passwdrootbindaemonadmlpsyncshutdownhaltmailoperator取出用户名后排序# awk -F “:” ‘{print $1}’ passwd|sortabrtadmadminapacheavahibinchronycockpit-wscolord去重计数awk -F “:” ‘{print $NF}’ passwd|sort|uniq -c# awk -F “:” ‘{print $NF}’ passwd|s开发云主机域名ort|uniq -c 10 /bin/bash 1 /bin/sync 1 /sbin/halt 43 /sbin/nologin 1 /sbin/shutdown第2种方法创建数组# awk -F “:” ‘{hotel[$NF]}’ passwd# awk -F “:” ‘{hotel[$NF];print $NF}’ passwd开始统计# awk -F “:” ‘{hotel[$NF]++;print $NF,hotel[$NF]}’ passwd# awk -F “:” ‘{hotel[$NF]++}END{for(domain in hotel)print domain,hotel[domain]}’ passwd/bin/sync 1/bin/bash 10/sbin/nologin 43/sbin/halt 1/sbin/shutdown 1行号小于3的行# awk ‘NR
root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin以root开头的行awk ‘/^root/{print $0}’ passwdroo开发云主机域名t:x:0:0:root:/root:/bin/bash第3到第6行# awk ‘NR>3 && NR
adm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/活动:慈云数据爆款香港服务器,CTG+CN2高速带宽、快速稳定、平均延迟10+ms 速度快,免备案,每月仅需19元!! 点击查看sync文件前打印aaa bbb,文件结束尾部打印ccc dddawk ‘BEGIN{print “aaa”,”bbb”} {print $1,$2} END{print “ccc”,”ddd”}’ passwdawk -F “:” ‘{ if($3
root system userbin system userdaemon system useradm system userlp system usersync system usershutdown system userawk ‘BEGIN{ for( i=1;i
awk -v i=1 ‘BEGIN{ while(i
看完上述内容,你们掌握Awk常用用法有哪些的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注开发云行业资讯频道,感谢各位的阅读!
本文从转载,原作者保留一切权利,若侵权请联系删除。
《Awk常用用法有哪些》来自互联网同行内容,若有侵权,请联系我们删除!
还没有评论,来说两句吧...