题解 | 输出和3306端口建立连接总的各个状态的数目
netstat练习4-输出和3306端口建立连接总的各个状态的数目
https://www.nowcoder.com/practice/5ce76fd1513d4eacae68ad3b2aca1fbb
#!/bin/bash #定义第一个变量IP接收第一个TOTAL_IP的值 ip=$(cat nowcoder.txt | grep "tcp" | awk '{print($5)}' | awk -F ":" '{if($2 == "3306"){print($1)}}' | sort -n | uniq | wc -l) #定义第二个变量state接收3306端口建立连接的各个类型和数目的值 state=$(cat nowcoder.txt | grep "tcp" | awk '{print($5 " " $6)}' | awk -F ":" '{print($2)}' | awk -F " " '{if($1 == "3306"){print($2)}}' | uniq -c | awk '{print($2 " " $1)}') #定义第三个变量number接收第三个TOTAL_LINK的值 number=$(cat nowcoder.txt | grep "tcp" | awk '{print($5 " " $6)}' | awk -F ":" '{print($2)}' | awk -F " " '{if($1 == "3306"){print($2)}}' | uniq -c | awk '{print($1)}') #按照题目要求输出 echo "TOTAL_IP "$ip echo $state echo "TOTAL_LINK "$number
解题思路:
1.这道题稍微有点复杂,输出需要有三个值,所以我想到的是定义三个变量分别去取出这三个值
2.定义第一个变量IP接收第一个TOTAL_IP的值,定义第二个变量state接收3306端口建立连接的各个类型和数目的值,定义第三个变量number接收第三个TOTAL_LINK的值,过滤数据几乎差不多,使用awk一步一步对文本进行处理,直到拿到需要的值(判断条件都一样,都是判断端口号是3306才进行输出)
3.拿到三个值后,按照题目要求的格式进行相应的输出即可