awk的数组
2014-03-12 10:11
99 查看
1、创建一个test文件
# cat test
a 45
b 12
a 3
b 4
统计各个相同字母对应的数字和
# awk '{A[$1]+=$2} END {for (i in A) print i , A[i]}' test
a 48
b 16
awk提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。
任何在BEGIN之后列出的操作(在{}内)将在Unix awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。
2、我们看一下下面一句,就理解END的意义
# awk '{A[$1]+=$2} {for (i in A) print i , A[i]}' test
a 45
a 45
b 12
a 48
b 12
a 48
b 16
这里显示,如果没有END,就是前面的数组执行一次,后面的for循环执行一次,加上END后,等前面的数组执行完了,才执行后面的for语句
3、下面我们看一下BEGIN的用法
# awk 'BEGIN{WHO="who"} {A[$1]+=$2} END {for (i in A) print i , A[i] , WHO}' test
a 48 who
b 16 who
GEGIN就是起到一个初始化的意义!
4、一个统计进程TCP连接数的脚本
#!/bin/bash
#
while [ "1"="1" ]
do
echo -e "*********************************"
netstat -np | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'|sort -k2 -n|grep -v '-'|grep -v 'httpd'|grep '/' > /dev/shm/txt
while read A COUNT
do
if [ $COUNT -le 800 ]; then
echo -e "`ps -ef | grep ${A%/*} 2>&1| grep -v grep | awk '{print $1}'`\t$A\t$COUNT"
else
echo -e "\033[31m`ps -ef | grep ${A%/*} 2>&1| grep -v grep | awk '{print $1}'`\t$A\t$COUNT\033[0m"
fi
done < /dev/shm/txt
#rm -f txt
sleep 5
done
# cat test
a 45
b 12
a 3
b 4
统计各个相同字母对应的数字和
# awk '{A[$1]+=$2} END {for (i in A) print i , A[i]}' test
a 48
b 16
awk提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。
任何在BEGIN之后列出的操作(在{}内)将在Unix awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。
2、我们看一下下面一句,就理解END的意义
# awk '{A[$1]+=$2} {for (i in A) print i , A[i]}' test
a 45
a 45
b 12
a 48
b 12
a 48
b 16
这里显示,如果没有END,就是前面的数组执行一次,后面的for循环执行一次,加上END后,等前面的数组执行完了,才执行后面的for语句
3、下面我们看一下BEGIN的用法
# awk 'BEGIN{WHO="who"} {A[$1]+=$2} END {for (i in A) print i , A[i] , WHO}' test
a 48 who
b 16 who
GEGIN就是起到一个初始化的意义!
4、一个统计进程TCP连接数的脚本
#!/bin/bash
#
while [ "1"="1" ]
do
echo -e "*********************************"
netstat -np | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'|sort -k2 -n|grep -v '-'|grep -v 'httpd'|grep '/' > /dev/shm/txt
while read A COUNT
do
if [ $COUNT -le 800 ]; then
echo -e "`ps -ef | grep ${A%/*} 2>&1| grep -v grep | awk '{print $1}'`\t$A\t$COUNT"
else
echo -e "\033[31m`ps -ef | grep ${A%/*} 2>&1| grep -v grep | awk '{print $1}'`\t$A\t$COUNT\033[0m"
fi
done < /dev/shm/txt
#rm -f txt
sleep 5
done
相关文章推荐
- awk之利用数组去重
- [2012-06-18]awk利用关联数组合并记录
- 把awk中的数组赋值给shell中的数组
- awk 数组
- 老男孩教育每日一题-2017年3月31日-awk数组统计
- awk数组计数和去重---统计域名访问次数
- awk里面的数组很好用
- awk 之 asort 与 asorti 数组排序区别及演示
- awk数组操作
- AWK数组操作详细学习----关联数组
- awk的数组
- 利用awk数组循环取出域名及统计和排序处理
- AWK数组心得
- awk工具扩展,数组
- awk的split数组、BEGIN
- AWK处理数组
- 数组排序(awk)
- AWK数组
- awk数组里面的$0问题及想到的
- shell (awk)数组使用案例