【Linux】 awk应用

1  统计机器上处于不同状态的所有TCP连接的个数(TCP连接是有状态连接,包含SYN_RECV, ESTABLISHED, TIME_WAIT, FIN_WAIT0, FIN_WAIT1等多种状态,要求统计各种状态下的连接的个数)。

1 netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}'

 此命令可以用于检查是否存在SYN-FLOODING攻击。如果SYN_RECV状态的半连接异常多,说明存在这种DDOS攻击。

2  统计目录下各类型文件的个数。$NF是每一行用-F指定的字符分隔之后,得到的最后一列。

1 ls | awk -F. '{S[$NF]++} END {for(key in S) print Key, S[key]}'

3  日期

  将日期转换成数字:例如2015-08-01 01:01:01,111 -> 144XXXXXXXXXX

1 awk -F [-:,]  '{print mktime($1" "$2" "$3" "$4" "$5" "$6" "$7)}'

      将日期转换成数字之后,就可以做很多日期比较了,比如找到两个连续的时间间隔小于10ms的行。

4 打印不换行。

      例如,只打印每一行的第9个词到行末。

1 awk '{for(i=9; i<=NF; i++) {printf $i" "; } print " " }' <file>
原文地址:https://www.cnblogs.com/zhchngzng/p/4472546.html