Как мне избежать точки / точки в совпадении строки bash
Это мой первый пост, и я действительно ценю все ответы, которые мне до сих пор помогали на этом сайте, я надеюсь, что это не лишний пост, но я не смог найти что-то подобное здесь.
Я пытаюсь разбить строку, которую я получу из файла, на отдельные IP-адреса.
Строка будет выглядеть так:. something:[12.12.12.12],[13.13.13.13]
Я пытаюсь сделать строковые манипуляции, как описано в TLDPexpr "$string" : '\($substring\)'
При попытке избежать точки / точки он не будет найден:
testString=[12.12.12.12],[13.13.13.13]
echo `expr "$stringZ" : '\(\\[.{1,3}\..{1,3}\..{1,3}\..{1,3}\\]\)'`
Я заметил, что мне нужно дважды убежать [и я попытался сделать это с точкой / точкой, но это не помогает.
Как я могу этого достичь?
Да, я знаю, что это регулярное выражение не очень хорошо, но я хотел бы сначала решить проблему с точкой / периодом, прежде чем я сделаю больше для регулярного выражения.
большое спасибо
1 ответ
Вы можете использовать расширение параметров:
#!/bin/bash
string='. something:[12.12.12.12],[13.13.13.13]'
string=${string##*:} # Delete up to the last colon.
string=${string//[^0-9.]/ } # What's not a dot or digit gets replaced by a space.
for ip in $string ; do
echo "IP: $ip!"
done