空白行を除くすべての項目を印刷し、空白行の総数を表示するnawkスクリプトをどのように作成できますか?

空白行を除くすべての項目を印刷し、空白行の総数を表示するnawkスクリプトをどのように作成できますか?

私はいくつかの他のことを試しましたが、正しく動作しません。主に空行を除外する方法を知りたいです。

試したコマンド:nawk '{print $0}' filename | grep -v " "

答え1

nawk -v count=0 '!NF {count++; next}; 1; END {print count}'

フィールドを持たないすべての行(!NF)(この場合は空の行)に対して増えcount続けます。それ以外の場合は、行を印刷します(真の値に対するデフォルトの動作を含む1)。入力が終わったら、printを実行して、各行が空でなくてもまだ値を持つようにcount初期化します。count0count

空白のみを含む行では、失敗する可能性がある - 代わりに/^$/- を使用できます。!NF

関連情報