次の例では、inetの前に4つのスペースがあります。
wolf@linux:~$ ip address show eth0 | grep 'inet '
inet 10.10.10.10/24 brd 10.10.10.255 scope global dynamic eth0
wolf@linux:~$
この例のように、スペースの数をどのように計算できますか?
例はスペースが4つだけなので簡単です。
何かがあればどうでしょうか?何百、何千?
見つけることができるショートカットがありますか?
ベストアンサー1
tr
使用したい文字以外のすべての項目を削除できますwc
。
ip address show eth0 | grep 'inet ' | tr -d -c ' ' | wc -m
これは大量のテキストに合わせて拡張され、tr
非常に効率的です。
ただし、tr
GNUを含む一部の実装では、tr
シングルバイト文字(スペース文字など)のみを使用できます。
先行スペースのみを計算するには、以下より強力なものが必要ですtr
。
ip address show eth0 | grep 'inet ' | sed 's/[^ ].*$//' | tr -d '\n' | wc -m
これにより、先行スペースを含まない各行のすべての部分が削除され、改行文字と数が削除されます。
バラより各行の特定の文字数を計算する方法は?1行あたりの数に興味がある場合