shell编程题(二十七)
题目:
查看TCP连接状态
答案:
完整答案:
netstat -nat | grep tcp | awk '{print $6}' | sort | uniq -c | sort -rn
分步一:
分步二:
netstat -nat | grep tcp | awk '{print $6}'
分步三:
答案二:
netstat -n | awk '/^tcp/ {print $NF}' | sort | uniq -c | sort -rn
解析:
awk '/^tcp/ {print $NF}'
awk中的命令格式
/pattern/{actions}
pattern是正则表达式,actions是一系列操作
awk程序一行一行读出待处理文件,如果某一行与pattern匹配,或者满足condition条件,则执行相应的actions,如果一条awk命令只有actions部分,则actions作用于待处理文件的每一行。
NF表示numbers of field ,是获取的文件的成员数,默认是空格分开的。
例如 获取的文件内容是 hello world ,那么NF就是2.
print $NF 的意思就是获取打印获取文件的最后一行(以空格为分割线)
答案三:
netstat -n | awk '/^tcp/ {++arr[$NF]}; END {for (k in arr) print k , "\t", arr[k] }'
其中 ++arr[$NF]
这类似与C++中的 map
例如 文件内容为 hello world hello
那么这这句的执行结果以后就是
arr["hello"] = 2
arr["world"] = 1
整体的功能意思就是说,统计最后一项 state 的状态数,然后加起来
答案四:
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | uniq -c | sort -rn