awkを使用して#で始まらない複数のファイルの行数を計算し、ファイル名でリストするにはどうすればよいですか?

awkを使用して#で始まらない複数のファイルの行数を計算し、ファイル名でリストするにはどうすればよいですか?

grep "^[^#]" file.txt | wc -l私はそれを単一のファイルの行数を計算するために使用しました。

awk次に始まらない行数をどのように計算#し、このようにファイル名を印刷できますか?

file1.txt 30 
file2.txt 33
....

ベストアンサー1

次の方法でこれを行うこともできますgrep

grep -c "^[^#]" *

または

grep -cv "^#" *

前者は空行も除外します。後者はそうではありません。

現在のディレクトリに単一のファイルがある場合、ファイル名は表示されません。grep一部のバージョン(GNUを含む)では、次のオプションを追加することでこれを防ぐことができます。grep-H

grep -cvH "^#" *

GNUはgrepまた、次の降順ディレクトリツリーの再帰検索もサポートしています。

grep -rcvH "^#" .

出力が要件と一致しないため、次のように表示されます。

file1.txt:30
file2.txt:33

ただし、この問題は出力をパイピングすることで解決できますsed 's/:\([^:]*\)$/ \1/'

おすすめ記事