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