合計文字数ではなく、wcを使用して各行の文字数をカウントすることはできますか?
例えば.
echo -e foo\\nbar\\nbazz | grep -i ba
戻り値:
bar
bazz
では、なぜecho -e foo\\nbar\\nbazz | grep ba | wc -m
がそれらの単語の長さのリストを返さないのでしょうか? (3と4)
提案?
PS:なぜwc -m
で改行がカウントされるのですか? wc -l
は改行を数えるので、なぜwc -m
も改行する必要があるのですか?
wc
はファイル全体をカウントします。 awk
を使用して、行ごとに処理できます(行区切り文字はカウントしません)。
echo -e "foo\nbar\nbazz\n" | grep ba | awk '{print length}'
またはawk
は、ほとんどがgrep
のスーパーセットです。
echo -e "foo\nbar\nbazz\n" | awk '/ba/ {print length}'
(一部のawk
実装は、文字数(wc -c
など)ではなくバイト数(wc -m
など)を報告し、他の実装は部分を形成しないバイトをカウントします文字に加えて有効な文字の数(wc -m
はほとんどの実装でそれらを無視します)
これを行う別の方法を次に示します。
for line in $(echo -e foo\\nbar\\nbazz); do echo ${#line}; done
出力:
3
3
4