run.log是⼀个具有固定格式的⽇志⽂件。每⼀⾏的格式为: ip[]time[]runner[]command[]result ,其 中 []表示空格,ip格式为点分⼗进制表示法。编写⼀个名为log.sh的shell脚本统计每个ip出现的次数。 例⼦: 10.10.10.1[]32 10.10.10.2[]2 10.10.10.3[]5
时间: 2023-09-19 10:07:04 浏览: 159
BDS-Runner.rar_Run To You
好的,这道题目与之前的题目相同,以下是统计每个IP出现次数的log.sh脚本:
```bash
#!/bin/bash
# 读取日志文件
while read line; do
# 获取IP地址
ip=$(echo $line | cut -d "[" -f 1)
# 统计IP出现次数
if [[ ! -z $ip ]]; then
((count[$ip]++))
fi
done < run.log
# 输出统计结果
for ip in "${!count[@]}"; do
echo "$ip 出现了 ${count[$ip]} 次"
done
```
脚本逐行读取日志文件,使用cut命令获取每行日志中的IP地址,并将其存储在变量ip中。接着,使用一个关联数组count来统计每个IP出现的次数。最后,使用一个for循环遍历count数组,并输出每个IP出现的次数。
需要注意的是,这个脚本假设日志文件中的每行都符合题目所描述的固定格式。如果日志文件中存在其他格式的行,可能会导致脚本无法正常工作。
阅读全文