awk用法实例
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,1.统计以下文本内容中每个数字出现的次数[liuwei@test tmp]$ cat 1.log 1 22 33 4100 1 100 100 100[liuwei@test tmp]$ awk '{
千家信息网最后更新 2025年01月20日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 2
2.统计上面文本中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 -l
3.统计下面语句中,每个单词及字符出现的个数
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.txt
4.打印出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.log
5.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安全错误
数据库的锁怎样保障安全
2kol2因中转服务器连接失败
扬州专业联想服务器安装
用命令给数据库创建主键
服务器 自动重启
分库分表后数据库事物还有效吗
四川乘捷互联网科技有限公司
关于互联网科技的名词
学习网络安全知识的书籍
多对多关联数据库表
青浦区创新数据库服务商活动简介
做软件开发平均薪资
轻量应用服务器怎么开放端口
正在下载游戏重要数据库
惠普 服务器 原厂原装
计算机网络技术基础名词互译
ibm服务器从u盘启动
商务本 软件开发
vb 数据库保存
安卓商城手机软件开发app
重庆大学网络技术处长
全球网络安全供应商排名
初级软件开发工程师最初薪资
阎良区软件开发推荐
简单软件开发毕业设计
计算机与网络安全学院
方城客户管理软件开发
绝地求生韩服单独服务器
被取代的服务器
华为计算机网络技术教程
杭州展会多媒体软件开发