コマンドラインから行数を計算し、単純な分割をどのようにできますか?

コマンドラインから行数を計算し、単純な分割をどのようにできますか?

私の入力ファイルのいくつかの行は次のとおりです。

  08:51:36 UN 127.0.0.1
  08:51:36 UN 127.0.0.2
  08:51:36 UN 127.0.0.3
  08:53:50 DN 127.0.0.1
  08:53:50 DN 127.0.0.2
  08:53:50 DN 127.0.0.3

IPアドレスを入力するシェルスクリプトを作成したいと思います。

 ./CountRate.sh 127.0.0.1

スクリプトは0.5を返す必要があります。式は、IP 127.0.0.1のノードがUN状態(「1」)にある回数を127.0.0.1(「2」)が表示される行数で割ったものです。これを達成するには、どのLinuxコマンドを使用する必要がありますか?

ベストアンサー1

スクリプトawk言語を使用すると、次の作業が簡単になります。

awk -v host=127.0.0.1 '
  $3 == host {n++; x += $2 == "UN" ? 1 : 0} 
  END {print x/n}
' inputfile
0.5

おすすめ記事