0

私はLinuxシェルコマンドのマスターではないので、コマンドの何が問題になっているのかを理解するのに少し問題があります。

これを実行すると

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}

しかし、down2行目がパターンを満たしているにもかかわらず、結果は次のようになります。

445             0.0.0.0:*               LISTEN      803/smbd        

それで、なぜ私は良い結果を得ることができなかったのですか?

4

1 に答える 1

2

あなたが持っている

/^445.*smbd$/

しかし、2行目を見てください。後にスペース/タブがありますsmbd。そのため、一致しません。

これを試して:

.......|awk 'BEGIN {res="Down"} /^445.*smbd\s*$/ {res=$3} END {print res}'

サンプルデータを入力として使用すると、上記のawkは

LISTEN
于 2013-03-12T15:11:32.517 に答える