GNU/Linux >> Linux の 問題 >  >> Linux

Wcで各行の文字を数えますか?

文字の総数ではなく、wcを使用して各行の文字をカウントすることはできますか?

例:

echo -e foo\nbar\nbazz | grep -i ba

戻り値:

bar
bazz

では、なぜ echo -e foo \ nbar \ nbazz | grep ba | wc -m
それらの単語の長さのリストを返しますか? (3と4)

提案?

追伸:ラインフィードが wc -mでカウントされるのはなぜですか ? wc -l <​​/ code> 改行を数えるので、なぜ wc -m が必要なのですか? それらも数えますか?

承認された回答:

wc ファイル全体をカウントします;
awkを使用できます 行ごとに処理するには(行区切り文字はカウントされません):

echo -e "foonbarnbazzn" | grep ba | awk '{print length}'

またはawkとして ほとんどがgrepのスーパーセットです :

echo -e "foonbarnbazzn" | awk '/ba/ {print length}'

(一部の awk に注意してください 実装はバイト数を報告します( wc -c など) )文字数ではなく( wc -m など) )などは、文字に加えて有効な文字の一部を形成しないバイトをカウントします( wc -m ほとんどの実装ではそれらを無視します))


Linux
  1. コマンドラインでsortを使用してソートする

  2. sedを使用してコマンドラインでテキストを操作する

  3. Vimの各行の先頭にテキストを挿入する方法

  1. シェルで制御文字(^ c、^ d、^ [、…)を異なる方法で表示する方法は?

  2. Sedの行末に単語を追加しますか?

  3. シェル スクリプトの各行から最初の 5 文字を取得する

  1. Linuxコマンドラインでのデータストリームの操作

  2. Linuxコマンドラインでのパイプの操作

  3. 各行末の空白の各文字を「_」に置き換えます