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ディストリビューションで通常見られるもの以外のアプリケーション/ツールのインストールを伴わないソリューションを試みています。
重要:
以下の仮想的な例のようなものが欲しいです。この場合、2つのシェル変数(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を使用しています!