Linux命令之awk数组使用范例
目录
取ifconfig bond0的IP地址
[root@xuegod68 mnt]# ifconfig bond0 bond0 Link encap:Ethernet HWaddr :0C:::8F:AD inet addr:192.168.1.123 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe27:8fad/ Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU: Metric: RX packets: errors: dropped: overruns: frame: TX packets: errors: dropped: overruns: carrier: collisions: txqueuelen: RX bytes: (36.7 MiB) TX bytes: (1008.6 KiB)
命令如下:
[root@xuegod68 mnt]# ifconfig bond0 |awk -F "[ :]+" 'NR==2{print NR" "$4}'
192.168.1.123
统计apache日志单IP访问请求数排名
[root@xuegod68 mnt]# head - .txt 10.0.0.3 -- [/Mar/-::+]*GET/HTTP/1.1* *-* 10.0.0.3 -- [/Mar/-::+]*GET/HTTP/1.1* *-* 10.0.0.5 -- [/Mar/-::+]*GET/HTTP/1.1* *-* 10.0.0.3 -- [/Mar/-::+]*GET/HTTP/1.1* *-* 10.0.0.6 -- [/Mar/-::+]*GET/HTTP/1.1* *-*
第一种方法
[root@xuegod68 mnt]# awk '{print $1}' .txt |sort|uniq -c
10.0.0.3
10.0.0.4
10.0.0.5
10.0.0.6
第二种方法
[root@xuegod68 mnt]# awk '{array[$1]++} END {for(key in array) print key,array[key]}' 2.txt
10.0.0.3 35
10.0.0.4 5
10.0.0.5 10
10.0.0.6 10
统计域名访问量
[root@xuegod68 mnt]# cat .txt http://www.baidu.com/index.html http://www.163.com/1.html http://www.cnblogs.com/index.html http://www.baidu.com/2.html http://www.163.com/index.html http://www.qq.com/index.html http://www.baidu.com/3.html http://www.163.com/2.html http://www.baidu.com/2.html
第一种方法:
[root@xuegod68 mnt]# awk '{split($0,array,"/+");key=array[2];count[key]++}END{for(kk in count) print kk,count[kk]}' .txt
www.qq.com
www.cnblogs.com
www.baidu.com
www..com
第二种方法:
[root@xuegod68 mnt]# awk -F [/]+ '{array[$2]++} END {for(key in array) print key,array[key]}' .txt
www.qq.com
www.cnblogs.com
www.baidu.com
www..com
计算每个人的总工资和平均工资
[root@xuegod68 mnt]# cat .txt wodi 12k yingsui 15k jeacen 10k yideng 10k kuqi 8k xiaofen 6k wodi 11k yingsui 12k jeacen 4k kuqi 12k yideng 11k xiaofen 10k
命令如下:
[root@xuegod68 mnt]# awk '{array[$2]+=$3;count[$2]++}END{for(key in array) print key,array[key]"k",array[key]/count[key]}' 3.txt
kuqi 20k 10
jeacen 14k 7
yingsui 27k 13.5
xiaofen 16k 8
wodi 23k 11.5
yideng 21k 10.5
对本地IP和远程IP去重并统计重复数
[root@xuegod68 mnt]# cat .txt Proto Recv-Q Send-Q Local Addree Foreign Addree State tcp 0.0.0.0: 0.0.0.0:* LISTEN tcp 115.29.49.213: 117.136.27.254: SYN_RECV tcp 115.29.49.213: 113.97.117.157: SYN_RECV tcp 115.29.49.213: 117.136.40.20: SYN_RECV tcp 115.29.49.213: 117.136.40.20: SYN_RECV tcp 115.29.49.213: 121.236.219.69: SYN_RECV tcp 0.0.0.0: 0.0.0.0:* LISTEN tcp 0.0.0.0: 0.0.0.0:* LISTEN unix [] SYREAM CONNECTED /TMP/MYSQL.SOCK unix [] SYREAM CONNECTED /TMP/MYSQL.SOCK unix [] SYREAM CONNECTED /TMP/MYSQL.SOCK unix [] SYREAM CONNECTED /TMP/MYSQL.SOCK unix [] SYREAM CONNECTED /TMP/MYSQL.SOCK unix [] SYREAM CONNECTED /TMP/MYSQL.SOCK unix [] SYREAM CONNECTED /TMP/MYSQL.SOCK unix [] SYREAM CONNECTED /TMP/MYSQL.SOCK unix [] SYREAM CONNECTED /TMP/MYSQL.SOCK
命令如下:
[root@xuegod68 mnt]# awk -F "[ :]+" '/^tcp/{array[$3" "$5]++}END{for(key in array) print key,array[key]}' .txt
115.29.49.213 113.97.117.157
115.29.49.213 117.136.27.254
0.0.0.0 0.0.0.0
115.29.49.213 117.136.40.20
115.29.49.213 121.236.219.69
统计源IP,端口及目的IP同时去重
[root@xuegod68 mnt]# head - .txt Dec :: 10.0.0.0 RV016 RGFW-OUT:ACCEPT (TCP 10.0.0.131:->210.192.121.172: on ixp7) [,] Dec :: 10.0.0.0 RV016 RGFW-OUT:ACCEPT (TCP 10.0.0.131:->210.192.121.172: on ixp7) [,] Dec :: 10.0.0.0 RV016 RGFW-OUT:ACCEPT (TCP 10.0.0.131:->210.192.121.172: on ixp7) [,] Dec :: 10.0.0.0 RV016 RGFW-OUT:ACCEPT (TCP 10.0.0.131:->210.192.121.172: on ixp7) [,] Dec :: 10.0.0.0 RV016 RGFW-OUT:ACCEPT (TCP 10.0.0.131:->210.192.121.172: on ixp7) [,] Dec :: 10.0.0.0 RV016 RGFW-OUT:ACCEPT (TCP 10.0.0.43:->203.81.19.92: on ppp6) [,] Dec :: 10.0.0.0 RV016 RGFW-OUT:ACCEPT (UDP 10.0.0.19:->121.14.96.233: on ppp0) [,] Dec :: 10.0.0.0 RV016 RGFW-OUT:ACCEPT (UDP 172.16.1.103:->211.147.6.3: on ppp2) [,] Dec :: 10.0.0.0 RV016 RGFW-OUT:ACCEPT (TCP 172.16.1.203:->61.135.163.86: on ixp7) [,] Dec :: 10.0.0.0 RV016 RGFW-OUT:ACCEPT (TCP 10.0.0.131:->210.192.121.172: on ixp7) [,]
命令如下:
[root@xuegod68 mnt]# vim .sh
{
split($,array,":|->")
sip=array[]
sport=array[]
mip=array[]
if (!((sip,sport,mip) in tree)){
tree[sip,sport,mip] =
}
}
END{
for (key in tree)
print key
}
[root@xuegod68 mnt]# awk -f .sh .txt 172.16.1.10357318211.147.6. 10.0.0.191441121.14.96. 172.16.1.203437261.135.163. 10.0.0.4354963203.81.19. 10.0.0.1311227210.192.121.
美化效果如下:
[root@xuegod68 mnt]# cat 5.sh
BEGIN{
printf("%-16s %-6s %-16s\n","SIP","SPORT","MIP")
}
{
split($9,array,":|->")
sip=array[1]
sport=array[2]
mip=array[3]
if (!((sip,sport,mip) in tree)){
tree[sip,sport,mip] = 1
}
}
END{
for (key in tree){
split(key,out,SUBSEP)
printf("%-16s %-6s %-16s\n", out[1],out[2],out[3])
}
}
[root@xuegod68 mnt]# awk -f .sh .txt SIP SPORT MIP 172.16.1.103 211.147.6.3 10.0.0.19 121.14.96.233 172.16.1.203 61.135.163.86 10.0.0.43 203.81.19.92 10.0.0.131 210.192.121.172
Linux命令之awk数组使用范例的更多相关文章
- 【linux】linux命令grep + awk 详解
linux命令grep + awk 详解 grep:https://www.cnblogs.com/flyor/p/6411140.html awk:https://www.cnblogs.com ...
- linux命令之awk命令
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是linu ...
- 程序猿必知必会Linux命令之awk
前言 对于一名专业的程序员来说,Linux相关知识是必须要掌握的,其中对于文本的处理更是我们常见的操作,比如格式化输出我们需要的数据,这些数据可能会来源于文本文件或管道符,或者统计文本里面我们需要的数 ...
- Linux常用基本命令:三剑客命令之-awk数组用法
AWK的数组用法跟javascript类似. 1,定义数组 awk 'BEGIN{a[0]="zhangsan";a[1]="lisi";print a[0]} ...
- linux命令之awk
简介 awk命令的名称是取自三位创始人Alfred Aho .Peter Weinberger 和 Brian Kernighan姓名的首字母,awk有自己的程序设计语言,设计简短的程序,读入文件,数 ...
- Linux 命令的20个实用范例,入门必看!
Tips: 达内Linux云计算免费课程火热抢报中,点击文末“阅读原文”快速抢! Linux中一个基本命令是ls.没有这个命令,我们会在浏览目录条目时会遇到困难.这个命令必须被每个学习Linux的人知 ...
- Linux命令之乐--awk
1.脚本参数传值 #/bin/bash awk '"} {if(($1==a)) print $2;}' /etc/hosts 执行结果:
- linux命令和awk
1.统计一下代码量 find . -name "*.py" | xargs wc -l | awk 'BEGIN {size = 0} { size+=$1} END{print ...
- Linux命令:awk求和、平均值、最大最小值
本文链接:https://blog.csdn.net/wyqwilliam/article/details/825600431.求和cat data|awk '{sum+=$1} END {print ...
随机推荐
- chapter1 渗透测试与metasploit
网络对抗技术课程学习 chapter1 渗透测试与metasploit 一.读书笔记 二.渗透测试 通过模拟恶意攻击者的技术与方法进行攻击,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响 ...
- 初学c# -- 学习笔记(三)
结合前面学的许多东西,写了一个小程序.会话.自定义滚动条.css等等.小程序没有用数据库,主要不知道该用哪种,以后再说吧.登录也简单,就输入用户名就可以了. 百度是个好东西,写程序时候,需要什么图就直 ...
- 破解excel密码保护
破解excel密码保护 录制一个新宏.内容如下.保存后运行,点几次确定,过一分钟还会再弹出来,再点确定,然后就好了. Public Sub AllInternalPasswords() ' Break ...
- xml/map转换器,递归设计思路
xml/map转换器 图片:http://pan.baidu.com/s/1nuKJD13 应用场景,为什么要把xml转map?我直接用jdom,dom4j操作不行吗? 如果你了解模板引擎(像velo ...
- C#实现JSON序列化与反序列化
1.使用 JavaScriptSerializer类实现序列化 namespace: System.Web.Script.Serialization eg: // 序列化 private string ...
- Expected one result (or null) to be returned by selectOne(), but found 2
这个问题在于你查询sql返回结果是多个值.一个集合,但是你在service的实现层的dao都调用了.get方法.而是应该使用.getlist方法等.
- Android 获取当前时间问题1
获取的写法如下: Calendar c = Calendar.getInstance();//可以对每个时间域单独修改 int year = c.get(Calendar.YEAR); int mon ...
- 网页链接qq
<a href="mqqwpa://im/chat?chat_type=wpa&uin=12345678&version=1&src_type=web& ...
- NGUI 新手引导
现在我们的游戏已到了开发后期,这个时候需要做新手引导这一块(恶心的新手引导,真想说游戏行业究竟哪个2B最先想出来要引导的???代码搞的到处都是,改了一次又改!) 吐槽过后进入正题:主要还是UI相关的操 ...
- MySQL命令实例
显示数据表结构 1.desc(describe) tablename;2.show columns from tablename;3.use information_schema; select ...