脱掉外套

    其中的“==”为比较运算符。其他比较运算符:!=, >, <, >=, <=

    我们来看看各种过滤记录的方式:

    1. Proto Recv-Q Send-Q Local-Address Foreign-Address State
    2. tcp 0 4166 coolshell.cn:80 61.148.242.38:30901 ESTABLISHED
    3. tcp 0 1 coolshell.cn:80 124.152.181.209:26825 FIN_WAIT1

    如果我们需要表头的话,我们可以引入内建变量NR:

    1. $ awk '$3==0 && $6=="LISTEN" || NR==1 {printf "%-20s %-20s %s\n",$4,$5,$6}' netstat.txt
    2. Local-Address Foreign-Address State
    3. 0.0.0.0:80 0.0.0.0:* LISTEN
    4. 127.0.0.1:9000 0.0.0.0:* LISTEN
    5. :::22 :::* LISTEN

    说到了内建变量,我们可以来看看awk的一些内建变量:

    怎么使用呢,比如:我们如果要输出行号:

    1. $ awk 'BEGIN{FS=":"} {print $1,$3,$6}' /etc/passwd
    2. bin 1 /bin
    3. adm 3 /var/adm
    4. lp 4 /var/spool/lpd
    5. sync 5 /sbin
    6. shutdown 6 /sbin
    7. halt 7 /sbin

    上面的命令也等价于:(-F的意思就是指定分隔符)

    注:如果你要指定多个分隔符,你可以这样来:

    再来看一个以\t作为分隔符输出的例子(下面使用了/etc/passwd文件,这个文件是以:分隔的):