#!/bin/bash fenzujs(){ # 定义一个函数为:fenzujs格式:fenzujs(){ } catfile="22.txt" catip="192.168.146" # 定义ip段 for((i=21; i<=37 ; i )) do echo "正在过滤IP:$catip.$i 过滤出来的信息为:" # 打印catip 和循环中的数值 cat $catfile | grep -A 3 "$catip.$i" | grep -v -E "ok=2|changed|TASK" # 查看日志文件,符号 | 管道进行过滤 # grep -A -3 配合内容的后3行的内容,有三行数据 # grep -v 不匹配 -E 多个内容 # grep -5 打印匹配行的前后5行 # grep -C 5 打印匹配行的前后5行 # grep -A 5 打印匹配行的后5行 # grep -B 5 打印匹配行的前5行 zuo=( `cat $catfile | grep -A 3 "$catip.$i" | grep -v -E "ok=2|changed|TASK" | grep "|" | awk -F"|" '{print $1}' | sed "s/"//g"` ) # 定义zuo数组变量 # awk -F"|" 过滤出来的内容,用 | 这个为间隔符号,print 第1列,sed s///g 将 冒号进行替换为空, 特殊字符转译 冒号为普通字符 echo "IP信息段落中左边数值为:${zuo[*]}" you=( `cat $catfile | grep -A 3 "$catip.$i" | grep -v -E "ok=2|changed|TASK" | grep "|" | awk -F"|" '{print $2}' | sed "s/"//g"` ) echo "IP信息段落中右边数值为:${you[*]}" calculatezuo=$(echo ${zuo[*]} | sed "s/ / /g") ; echo "IP: $catip.$i 左边数组:$calculatezuo 总值为:" $[$calculatezuo] calculateyou=$(echo ${you[*]} | sed "s/ / /g") ; echo "IP: $catip.$i 左边数组:$calculateyou 总值为:" $[$calculateyou] # 定义变量:calculatezuo 为一个执行结果:打印数组,将空格替换为 符号, # 将变量参与计算:echo $[] 中括号里面为 1 1 2 任意规则 zongz[$c]=`echo $[$calculatezuo]` zongy[$c]=`echo $[$calculateyou]` ((c )) # ((c )) 为接收循环打印变量的值,存入数组变变量:zongz ;其中$c对应((c ))它是辅助变量给zongz提供循环写入帮助,写完后,$C自动消失 done } fenzujs # 执行函数:将名称放出来 zonghejs(){ fenzujs echo "欢迎使用小绿叶技术博客,赛选日志中的数字,进行数字求和shell脚本.sh-shell
正在计算汇总所有主机数字求和:
-------------------------------------------------------------------------------------------------
"
jz=$(echo ${zongz[*]} | sed "s/ / /g") ; echo "左边值相加jz:$jz" jy=$(echo ${zongy[*]} | sed "s/ / /g") ; echo "右边值相加jy:$jy" # 定义变量jz : 打印数组,sed "s///g"将空格替换为 符号 ,并且打印变量 echo "左边总值:" $[$jz] # 将变量参与计算echo $[] echo "右边总值:" $[$jy] } zonghejs