大家好,欢迎来到IT知识分享网。
1.awk介绍
AWK是一种处理文本文件的语言,是一个强大的文本分析工具。AWK可以看成一门独立的语言,它拥有语言的基本特征,换句话说AWK可以写出极其繁琐和复杂的程序,AWK的语法比Shell的语法还难以接收。但绝大多数情况下,我们并不需要用AWK写过于复杂的东西,建议能用Shell处理的需求就不用AWK来解决。当用AWK处理需求远要比Shell处理简单的多的时候,我们就用AWK来解决。AWK也是用来截取列信息的,它比Shell中的cut命令更先进,比如对空格作为分隔符的处理。
2.应用方法
1.查看文件的内容
root@test-k8s-master1:/data/get_service# awk '{print}' list_back.txt iotap-dcsg-cabinet:iotap:1.1.0-54b7de2f-4:prod cesp-ssg-account:cesp:1.1.0-8a89b2ce-6:prod
2.打印文本内容
root@test-k8s-master1:/data/get_service# awk '{print $1}' list_back.txt |more iotap-dcsg-cabinet:iotap:1.1.0-54b7de2f-4:prod cesp-ssg-account:cesp:1.1.0-8a89b2ce-6:prod gid-generator:gid:1.0.0-41ed2964-9:prod cesp-ssg-account:cesp:1.1.0-73d1c806-0:prod ceap-dsg-web-system:ceap:1.1.0--2:prod
3.冒号分隔符之后的第3列
root@test-k8s-master1:/data/get_service# awk -F ":" '{print $3}' list_back.txt |more 1.1.0-54b7de2f-4 1.1.0-8a89b2ce-6 1.0.0-41ed2964-9 1.1.0-73d1c806-0 1.1.0--2 //打印两列 root@test-k8s-master1:/data/get_service# awk -F ":" '{print $3,$1}' list_back.txt |more 1.1.0-54b7de2f-4 iotap-dcsg-cabinet 1.1.0-8a89b2ce-6 cesp-ssg-account 1.0.0-41ed2964-9 gid-generator 1.1.0-73d1c806-0 cesp-ssg-account 1.1.0--2 ceap-dsg-web-system 1.1.0-1c59f782-1 jpaas-auth 1.1.0-5bb510d9-0 jpaas-bpm
4.常用变量说明
|
内置变量 |
含义 |
|
$1 |
第一列 |
|
$2 |
第二列 —– |
|
$0 |
代表整行 |
|
NF |
一行的列数 |
|
NR |
行数 |
a 筛选打印
//过滤esop所在的整行内容 root@test-k8s-master1:/data/get_service# awk -F ":" '/esop/{print $0}' list_back.txt esop-osg-omp:esop:1.1.0-0327ab23-4:prod esop-tsg-top:esop:1.1.0-9c99d4f8-4:prod //打印整行和行号 root@test-k8s-master1:/data/get_service# awk -F ":" '/esop/{print $0,NR}' list_back.txt esop-osg-omp:esop:1.1.0-0327ab23-4:prod 26 esop-tsg-top:esop:1.1.0-9c99d4f8-4:prod 27 //打印第二行 root@test-k8s-master1:/data/get_service# awk -F ":" 'NR==2{print}' list_back.txt cesp-ssg-account:cesp:1.1.0-8a89b2ce-6:prod //打印总行数 root@test-k8s-master1:/data/get_service# awk -F ":" 'END{print NR}' list_back.txt 167 //打印第几行有几列 root@test-k8s-master1:/data/get_service# awk -F ":" '{print "di"NR "row have"NF"lie"}' list_back.txt di1row have4lie di2row have4lie di3row have4lie
b 常用使用(网卡,ip)
//ip地址获取 root@test-k8s-master1:/data/get_service# ifconfig eth0|awk '/netmask/{print "ip:"$2}' ip:10.41.18.10 //磁盘/目录的可用量 root@test-k8s-master1:/data/get_service# df -h |awk 'NR==2{print $4}' 3.9G
5 awk的运算案列
//输出变量 root@test-k8s-master1:/data/get_service# awk 'BEGIN{x=10;print x}' 10 //计算 root@test-k8s-master1:/data/get_service# awk 'BEGIN{print 23}' 8 //计算 root@test-k8s-master1:/data/get_service# awk 'BEGIN{print 2^4}' 16
模糊匹配
//模糊查询,其中~表示匹配正则表达式 root@test-k8s-master1:/data/get_service# awk -F: '$1~/ro/' /etc/passwd root:x:0:0:root:/root:/bin/bash proxy:x:13:13:proxy:/bin:/usr/sbin/nologin _chrony:x:111:114:Chrony daemon,,,:/var/lib/chrony:/usr/sbin/nologin haproxy:x:112:117::/var/lib/haproxy:/usr/sbin/nologin //表示第七行不包含nologin的字串,且打印第 root@test-k8s-master1:/data/get_service# awk -F: '$7!~/nologin$/' /etc/passwd root:x:0:0:root:/root:/bin/bash sync:x:4:65534:sync:/bin:/bin/sync lxd:x:105:65534::/var/lib/lxd/:/bin/false pollinate:x:110:1::/var/cache/pollinate:/bin/false admin:x:1000:1000:admin:/home/admin:/bin/bash admins:x:1001:1001:admins:/home/admins:/bin/bash
特殊变量含义
|
内置变量 |
含义 |
|
FS |
输入字段的分隔符 默认空格 |
|
OFS |
输出字段的分隔符 默认空格 |
|
FNR |
读取文件记录数,从1到 |
|
RS |
输入行分隔符,默认换行符 |
|
ORS |
输出行分隔符 默认换行符 |
//分割字段打印第一行 root@test-k8s-master1:/data/get_service# awk 'BEGIN{FS=":"}{print $1}' /etc/passwd root daemon bin sys sync //分割输出的字段分割符-------代替 打印第一 第二 root@test-k8s-master1:/data/get_service# awk 'BEGIN{FS=":";OFS="=-=-=-=-="}{print $1,$2}' /etc/passwd root=-=-=-=-=x daemon=-=-=-=-=x bin=-=-=-=-=x sys=-=-=-=-=x //以空格分割 打印一整行 root@test-k8s-master1:/data/get_service# awk 'BEGIN{ORS=" "}{print $1}' /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-network:x:100:102:systemd systemd-resolve:x:101:103:systemd syslog:x:102:106::/home/syslog:/usr/sbin/nologin messagebus:x:103:107::/nonexistent:/usr/sbin/nologin _apt:x:104:65534::/nonexistent:/usr/sbin/nologin lxd:x:105:65534::/var/lib/lxd/:/bin/false uuidd:x:106:110::/run/uuidd:/usr/sbin/nologin dnsmasq:x:107:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin landscape:x:108:112::/var/lib/landscape:/usr/sbin/nologin sshd:x:109:65534::/run/sshd:/usr/sbin/nologin pollinate:x:110:1::/var/cache/pollinate:/bin/false _chrony:x:111:114:Chrony ceph:x:64045:64045:Ceph haproxy:x:112:117::/var/lib/haproxy:/usr/sbin/nologin admin:x:1000:1000:admin:/home/admin:/bin/bash admins:x:1001:1001:admins:/home/admins:/bin/bash redis:x:113:118::/var/lib/redis:/usr/sbin/nologin
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/92585.html