awk用法实例
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,1.统计以下文本内容中每个数字出现的次数[liuwei@test tmp]$ cat 1.log 1 22 33 4100 1 100 100 100[liuwei@test tmp]$ awk '{
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
为切实落实网络安全法
苹果商店app数据库
国产服务器定制化
手抄报有关网络安全
全自动数据库灾备方案
阿里云服务器管理员账号密码
网络技术职业规划
新会软件开发项目管理
网络安全服务提供商概念股
河北旧服务器回收多少钱
学生怎样为网络安全尽一份力
中国网络安全中心英语
网络安全发展规划 中标
武汉思连网络技术有限公司
网络安全隐患应急措施
wink软件开发
什么是软件开发的前端和后端
智媒软件开发
网络安全证书不能上网
论文中数据库多对多的表怎么表示
网络安全的日常隐患有多少
软件工程和网络安全专业
塞尔之光服务器互通吗
excel服务器登陆
数据库 分页
数据库更换头像
服务器会返回( )错误
网络安全的内容初中生
太平洋保险公司网络安全保险条款
网络安全法 应制定