在最近的工作中,处理了一些日志,用到了awk命令,我们平时用的比较多的例如cat、grep、sed、less等等,对于awk每次都是现用现查,今天我们来说几种awk的用法。
awk命令工作原理:
- 与sed一样, 均是一行一行的读取、处理
- sed作用于一整行的处理, 而awk将一行分成数个字段来处理
awk命令常用写法:
准备工作:首先创建一个log文件,touch awk.log,写入以下内容
- awk '{print $1}' awk.log,可以看出默认是按照空格分割,输出第一列。
- awk '{print 1,2}' awk.log ,按空格分割,并且输出1,2两列
- awk -F ',' '{print 1,2}' awk.log ,指定","为 分隔符,并且输出1,2两列。
- awk '{print NR,1,2}' awk.log,默认空格分割,输出行号,输出前两列
- awk -F ',' '{if(1>11)print(
- awk '{for(c=2;c<4;c++) print $c}' awk.log ,从第二列开始,依次循环输出到第四列。
- cat awk.log | awk '{print $1}' |sort -n |uniq -c,按空格分割,第一列正序排列。
- cat awk.log |awk 'BEGIN{size=0} {if($1==11) size++ } END{print size}',查找符合条件的数量。
- cat awk.log |awk '{print $1}' >> 11.log,筛选出第一列,输出到11.log。
- netstat -an|awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}',统计出tcp连接不同状态的数量。
- cat awk.log |awk -F 'bb' '{print 2}' |awk -F 'dd' '{print 1}'|awk -F ',' '{print