Whitespace

如何計算文本中的空格?

  • August 28, 2020

在以下範例中,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 個空格。

如果它有更多呢?數百,數千?

是否有捷徑可尋?

您可以使用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

這將刪除每行中不是前導空格的每個部分,然後刪除換行符和計數。

請參閱如何計算每行中特定字元的數量?如果您對每行的計數感興趣。

引用自:https://unix.stackexchange.com/questions/606644