Как подсчитать количество вхождений подстроки в строку, используя Bash?
ПРИМЕР:
Я хотел бы знать, сколько раз эта подстрока ...
Bluetooth
Soft blocked: no
Hard blocked: no
... происходит в этой строке ...
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
ПРИМЕЧАНИЕ I: я пробовал несколько подходов с помощью sed, grep, awk ... Ничто, кажется, не работает, когда у нас есть строки с пробелами и несколькими строками.
ПРИМЕЧАНИЕ II: я пользователь Linux и пытаюсь найти решение, которое не включает установку приложений / инструментов вне тех, которые обычно находятся в дистрибутивах Linux.
ВАЖНЫЙ:
Я хотел бы что-то вроде гипотетического примера ниже. В этом случае мы используем две переменные Shell (Bash).
ПРИМЕР:
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"
ПРИМЕЧАНИЕ: мы используем awk только для иллюстрации!