grep結果に基づく条件付きエコー

grep結果に基づく条件付きエコー

特定のポートにどのくらいの接続があるかを出力する次のコマンドがあります。

while true
do
    echo -n "number of connections: "
    netstat -an | grep ESTABLISHED | grep -w <Port Number> | wc -l
    date
    printf '\n'
    sleep 0.3
done | grep -v "number of connections: 0"

接続数が0の場合は何も印刷したくありません。ただし、日付は別々の行に印刷されるため、grepはdateコマンドと一緒には機能しません。

以下はいくつかのサンプル出力です。

Tue Nov 17 16:42:48 EST 2020

Tue Nov 17 16:42:49 EST 2020

number of connections: 1
Tue Nov 17 16:42:49 EST 2020

number of connections: 3
Tue Nov 17 16:42:49 EST 2020

number of connections: 2
Tue Nov 17 16:42:50 EST 2020

最初の2行は、接続数が0のときに印刷される内容ですが、私が望む出力(上記の出力例に基づいています)は次のとおりです。

number of connections: 1
Tue Nov 17 16:42:49 EST 2020

number of connections: 3
Tue Nov 17 16:42:49 EST 2020

number of connections: 2
Tue Nov 17 16:42:50 EST 2020

ベストアンサー1

変数へのカウントの割り当て

count=$(netstat -an | grep ESTABLISHED | grep -w <Port Number> | wc -l)
if [[ $count -gt 0 ]]; then #issue your echo or printf

おすすめ記事