`wc -l`をリアルタイムで更新するには?

`wc -l`をリアルタイムで更新するには?

<streaming ls> | wc -l正常に動作するコマンドがありますが、少し<streaming ls>時間がかかります。つまり、数分後に最終行数を取得できます。

wc -lリアルタイムでアップデート出力を取得する方法はありますか?

ベストアンサー1

この目的には使用できませんが、wc -l他のツール(AWKなど)を使用して表示される行の累積数を生成できます。

<streaming ls> | awk '{ printf "%d\r", NR } END { print NR }'

これは、行が表示されるたびに表示される行数を更新し、プロセスの終わりに行の総数で終わります。

出力量の多いコマンドの場合は、各コマンドを印刷してオーバーヘッドを減らすことができます。Nライン:

… | awk 'NR % 10 == 0 { printf "%d\r", NR } END { print NR }'

(のためN= 10)または毎秒印刷します。

… | awk 'systime() > lasttime { lasttime = systime(); printf "%d\r", NR } END { print NR }'

(またはN条件を>= lasttime + n)秒に変更します。

おすすめ記事