#!/bin/bash
fenzujs(){ # 定义一个函数为:fenzujs格式:fenzujs(){ }
catfile="22.txt"
catip="192.168.146" # 定义ip段
for((i=21; i<=37 ; i++ ))
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自动消失
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]