wcコマンドを使用せずに行、単語、文字数を計算する

wcコマンドを使用せずに行、単語、文字数を計算する

コマンドを使用してプログラムを作成しましたが、シェルスクリプトを使用してファイルで使用せずに行、単語、および文字数を計算するwc方法を知りたいです。wc

ベストアンサー1

バイト数の計算(例wc -c:)

< file LC_ALL=C tr -c '\n' '[\n*]' | grep -c '^'

改行数を計算するには(例wc -l:):

< file LC_ALL=C tr -cd '\n' | grep -c '^'

単語(たとえばwc -w)の場合、FreeBSD(GNUではない)などのPOSIX互換性を想定し、trファイルに無効なバイトシーケンスが含まれていないとします。

< file tr -cs '[:space:]' '[x*]' | tr -cs x '[\n*]' | grep -c x

文字(たとえばwc -m)の場合、同じ制限が適用されます。

< file tr -c '\n' '[\n*]' | grep -c '^'

出力情報:

printf '\0foo\u2006and \r\fbar\nbaz'

wcen_GB.UTF-8ロケールのFreeBSDシステムと同様に、それぞれ20、1、4、および18を提供します。

おすすめ記事