Como posso contar o número de ocorrências de uma substring em uma string usando o Bash?
EXEMPLO:
Gostaria de saber quantas vezes essa substring ...
Bluetooth
Soft blocked: no
Hard blocked: no
... ocorre nesta cadeia ...
0: asus-wlan: Wireless LAN
Soft blocked: no
Hard blocked: no
1: asus-bluetooth: Bluetooth
Soft blocked: no
Hard blocked: no
2: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
113: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
NOTA I: Tentei várias abordagens com sed, grep, awk ... Nada parece funcionar quando temos strings com espaços e várias linhas.
NOTA II: Eu sou um usuário Linux e estou tentando uma solução que não envolve a instalação de aplicativos / ferramentas fora daqueles que normalmente são encontrados nas distribuições Linux.
IMPORTANTE:
Eu gostaria de algo como o exemplo hipotético abaixo. Nesse caso, usamos duas variáveis de shell (Bash) .
EXEMPLO:
STRING="0: asus-wlan: Wireless LAN
Soft blocked: no
Hard blocked: no
1: asus-bluetooth: Bluetooth
Soft blocked: no
Hard blocked: no
2: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
113: hci0: Bluetooth
Soft blocked: no
Hard blocked: no"
SUB_STRING="Bluetooth
Soft blocked: no
Hard blocked: no"
awk -v RS='\0' 'NR==FNR{str=$0; next} {print gsub(str,"")}' "$STRING" "$SUB_STRING"
NOTA: Estamos usando o awk apenas para ilustrar!