这是我的第一篇帖子,我非常感谢该网站上迄今为止对我有帮助的所有答案,我希望这不是一篇多余的帖子,但我在这里找不到类似的内容。
我尝试将从文件中检索到的字符串拆分为单独的 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" : '\(\\[.{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