Linux Bashとスクリプト - テキストファイルの行数の計算

Linux Bashとスクリプト - テキストファイルの行数の計算

現在作業中のスクリプトに表示される行数を表示するのに問題があり、Puttyを使用しています。スクリプトは、次のようなテキストファイルを読み込みます。

user1|login|1
user2|login|1
user1|testing tests|10
user1|voiding tests|10
user2|logout|1
user1|logout|1

現在私のawkは次のようになります

awk -F '|' '$1 == "user1" {sum += $3} END {print "user has run " NF "
processes for a total of "  sum " minutes" }' textfile

現在、これは「user1が合計22分間に3つのプロセスを実行しました」というメッセージを提供しています。

私の計算が正しい場合は、行数(4つ)を正確に計算するために必要です。

ベストアンサー1

NF は「フィールド数」、つまり列数です。この例では、各行には3つの列があるため、一致数に関係なく、出力は常に3です。proc以下に示すように、各一致に対して追加数を計算する必要があります。

$ awk -F '|' '$1 == "user1" {proc += 1; sum += $3} END {print "user has run " proc " processes for a total of "  sum " minutes" }' textfile
user has run 4 processes for a total of 22 minutes

おすすめ記事