Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
awk linux shell似乎存在错误_Shell_Awk - Fatal编程技术网

awk linux shell似乎存在错误

awk linux shell似乎存在错误,shell,awk,Shell,Awk,我不是linux shell命令的高手,我有一点问题要理解我的命令中的错误: 当我运行这个 netstat -lptn | cut -d : -f 2,3,4,5,6,7 结果是 Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name 631 0.0.0.0:* LISTEN 853/cupsd

我不是linux shell命令的高手,我有一点问题要理解我的命令中的错误:

当我运行这个

netstat -lptn | cut -d : -f 2,3,4,5,6,7 
结果是

Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat       PID/Program name
631           0.0.0.0:*               LISTEN      853/cupsd       
445             0.0.0.0:*               LISTEN      803/smbd        
139             0.0.0.0:*               LISTEN      803/smbd        
53            0.0.0.0:*               LISTEN      1394/dnsmasq    
:1:631                 :::*                    LISTEN      853/cupsd       
::445                  :::*                    LISTEN      803/smbd        
::139                  :::*                    LISTEN      803/smbd 
好的,现在我添加额外的命令“awk”来过滤结果,如下所示:

netstat -lptn | cut -d : -f 2,3,4,5,6,7 |awk 'BEGIN {res="Down"} /^445.*smbd$/ {res=$3} END {print res}
但结果显示
down
尽管第二行符合模式:

445             0.0.0.0:*               LISTEN      803/smbd        
那为什么我不能得到好的结果呢?

你有

/^445.*smbd$/
但是看看第二行,在
smbd
之后有尾随空格/制表符。所以它不会被匹配

试试这个:

.......|awk 'BEGIN {res="Down"} /^445.*smbd\s*$/ {res=$3} END {print res}'
使用示例数据作为输入,上面的awk将打印

LISTEN