Linux awk命令

Linux awk命令

/ 0 评 / 0

awk Linux自带的强大文本分析工具 ,比较倾向于一行当中分成数个字段来处理。因此, awk 相当的适合处理小型数据的数据处理
awk 后面接两个单引号加上大括号 {} 来设定想要对数据进行的处理动作。 awk 可以处理后续接的文件,也可以读取来自前个指令的 standard output 。 但如前面说的, awk 主要是处理每一行的字段内的数据, 而默认的 字段的分隔符为 “空格键” 或 “[tab]

运算单元 代表意义
> 大于
< 小于
>= 大于或等于
<= 小于或等于
== 等于
!= 不等于

示例

$ cat access.log | egrep ‘10/Jun/2020:16’ | awk -F: ‘$3>10 && $3<20’

$ awk ‘{a[$1]++}END{for ( i in a){ print i,a[i]}}’ ip.txt

$ cat access.log | egrep “10/Jun/2020:16:11” | awk ‘{a[$1]++}END{for ( i in a ) print i,a[i]}’ | sort -nrk2 | head -n 10

$ cat /etc/passwd | awk -F: ‘{printf( “%20s \t %10s \t %15s \n”, $1,$2,$3)}’

$ cat access.log | awk ‘($7 ~ /\/icfekit\//) {print $0}’
$ cat access.log | awk ‘($7 !~ /\/icfekit\//) {print $0}’ # 取反

附录

127.0.0.1 - - [10/Jun/2020:16:05:27 +0800] "GET / HTTP/1.1" 499 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
127.0.0.2 - - [10/Jun/2020:16:05:28 +0800] "GET / HTTP/1.1" 499 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
127.0.0.4 - - [10/Jun/2020:16:05:29 +0800] "GET / HTTP/1.1" 499 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
127.0.0.1 - - [10/Jun/2020:16:05:30 +0800] "GET / HTTP/1.1" 200 3467 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"