awk用法实例
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,1.统计以下文本内容中每个数字出现的次数[liuwei@test tmp]$ cat 1.log 1 22 33 4100 1 100 100 100[liuwei@test tmp]$ awk '{
千家信息网最后更新 2026年11月01日awk用法实例
1.统计以下文本内容中每个数字出现的次数
[liuwei@test tmp]$ cat 1.log 1 22 33 4100 1 100 100 100[liuwei@test tmp]$ awk '{for(i=1;i<=NF;i++)s[$i]++}END{for(key in s)print key,s[key]}' 1.log4 1100 41 22 23 22.统计上面文本中100出现的次数
#方法1[liuwei@test tmp]$ awk '{for(i=1;i<=NF;i++)if($i==100)sum++}END{print sum}' 1.log4#方法2[liuwei@test tmp]$ awk '{for(i=1;i<=NF;i++)s[$i]++}END{for(key in s)if(key==100)print key,s[key]}' 1.log 100 4#方法3,不用awk进行统计[liuwei@test tmp]$ grep -o "100" 1.log | wc -l3.统计下面语句中,每个单词及字符出现的个数
the squid project provides a number of resources toassist users design,
implement and support squid installations. Please browsethe documentation
and support ections for more infomation
#统计字符出现次数[liuwei@test tmp]$ grep -o "\w" word.txt | awk '{s[$1]++}END{for(key in s)print key,s[key]}'#统计每个单词出现次数#方法1,直接遍历每行的每个字段进行累计[liuwei@test tmp]$ awk -F '[ ,.]+' '{for(i=1;i<=NF;i++)s[$i]++}END{for(key in s)print key,s[key]}' word.txtfor 1toassist 1number 1users 1project 1of 1more 1ections 1documentation 1resources 1a 1provides 1Please 1browsethe 1installations 1and 2support 2implement 1the 1infomation 1squid 2design 1#方法2,利用输入字段分隔符把每个单词变为单独的一行再行进统计[liuwei@test tmp]$ awk -v RS='[ ,.]+' '{s[$1]++}END{for(key in s)print key,s[key]}' word.txt4.打印出haproxy.log(nginx,tomcat等都可以用)中指定时间段内的日志,以便于进行分析
[liuwei@test tmp]$ awk '{if($3>="20:00:00" && $3<="20:15:59")print $0}' haproxy.log也可以写为:[liuwei@test tmp]$ awk '$3>="20:00:00"&&$3<="20:15:59"{print $0}' haproxy.log5.AWK笔试题-->获取本机的IP地址和掩码
#方法一,利用脚本的配置文件(source)进行获取,source的作用是将某个文件变成此脚本的配置文件source /etc/sysconfig/network-scripts/ifcfg-eth0printf "IP地址:%s\t子网掩码:%s\n" $IPADDR $NETMASK#方法二:利用awk地址定界file=/etc/sysconfig/network-scripts/ifcfg-eth0awk -F= '/IPADDR/,/NETMASK/{print $2}' $file#方法三:利用awk的或条件awk -F= '$1=="IPADDR"||$1=="NETMASK"{print $1,$2}' $file知识点1:source的作用知识点2:awk匹配连续多个字段的写法;/IPADDR/,/NETMASK/表示匹配IPADDR与NETMASK之间的所有内容6.统计当前服务器每个外部IP的连接个数
#方法1,原理-->先以空格为分隔符得到第5个字段,再以冒号为分隔符得到IP字段[liuwei@test tmp]$ netstat -tan | awk '/^tcp\>/{print $5}' | awk -F: '{s[$1]++}END{for(key in s)print key,s[key]}'#方法2,利用split函数-->需要知道split函数每个参数是什么意思,此方法看起来很高端啊netstat -tan | awk '/^tcp\>/{split($5,ip,":");s[ip[1]]++}END{for(key in s)print key,s[key]}'知识点:awk中split函数的用法,在此例中表示以冒号为分隔符将$5的内容进行分隔,存储到ip数组中7.要求文件a里的数据依次替换文件b中的xxx字样。
[liuwei@test tmp]$ cat a
aaa
bbb
ccc
ddd
[liuwei@test tmp]$ cat b
111 xxx
222 xxx
333 xxx
444 xxx
#方法1,利用getline函数进行实现[liuwei@test tmp]$ awk '{getline i<"a";print $1,i}' b111 aaa222 bbb333 ccc444 ddd#方法2,同时利用geline,sub函数进行实现[liuwei@test tmp]$ awk '{getline i<"a";sub("xxx",i,$2)}1' b111 aaa222 bbb333 ccc444 ddd知识点1:getline函数用于从文本中按行读取内容,并且可以将内容赋值给变量知识点2:awk中sub函数的用法,在此例中表示查找$2中的第一次出现的xxx,并且用变量i的值进行替换知识点3:awk中gub函数的用法,跟sub函数用法一样,不过sub只替换第一次找到的,gub表示替换全部的8.统计第2列的和;统计第1列中出现的内容,并统计出对应的第2列的和
[root@instance-d4u5ahgn tmp]# cat sumb.txt
1 76
2 78
1 75
2 99
4 100
3 12
#统计第2列的和[root@instance-d4u5ahgn tmp]# awk '$1==1{sum+=$2}END{print sum}' sumb.txt151#统计第1列中出现的内容,并统计出对应的第2列的和[root@instance-d4u5ahgn tmp]# awk '{s[$1]+=$2}END{for(key in s)print key,s[key]}' sumb.txt4 1001 1512 1773 12
统计
方法
函数
内容
知识
知识点
字段
文件
分隔符
次数
单词
地址
文本
个数
中表
作用
冒号
变量
字符
第一次
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡豆
互联网科技公司
互联网科技公司排名
互联网科技深圳
科技服务与互联网
高科技与互联网
互联网科技集团
凡科互联网科技
深圳卡尔迅互联网科技有限公司怎么样
互联网科技中介
上海宁丞科技互联网
昭通互联网科技选哪家
厦门千工互联网科技有限公司
互联网科技研发水平
用友工业互联网科技发展
互联网第三次科技革命特征
互联网领先科技活动
第三届互联网大会安防黑科技
互联网科技创新创业项目
中国主要互联网科技公司
伟宏互联网科技
A股互联网金融科技公司
互联网 新科技
青海省互联网新科技
互联网科技圈年度人物
黑云互联网科技有限公司
宇信科技在杭州互联网排第几
上海互联网科技公司ppt
玉溪新华互联网科技怎么选
科技互联网专业工作会议发言稿