大家好
我看不到我的错误,我想在字符串“t”中找到子字符串“searchstring”的位置
在我看过的几种方法中,这似乎最简单也最容易理解,但这只是挂起(两者)
awk 'match($t, "$searchstring")'
awk '{print match($t, "$searchstring")}'
Run Code Online (Sandbox Code Playgroud)
t ="MULTI: xyz/xxxx 的主要虚拟 IP:44595: 10.0.0.12"
搜索字符串 ="IP 为"
有什么建议?
cho*_*oba 14
使用参数扩展:
t="MULTI: primary virtual IP for xyz/x.x.x.x:44595: 10.0.0.12"
searchstring="IP for"
rest=${t#*$searchstring}
echo $(( ${#t} - ${#rest} - ${#searchstring} ))
Run Code Online (Sandbox Code Playgroud)
$rest在$searchstring之后包含 $t 的部分。因此子字符串的起始位置是整个字符串的长度减去 $rest 的长度减去 $searchstring 本身的长度。
小智 5
更好且适合更多情况(考虑“#”与“##”以及具有多个“IP for”实例)的方法是从匹配字符串中删除到末尾并使用剩余的长度。
text="MULTI: primary virtual IP for xyz/x.x.x.x:44595: 10.0.0.12"
search="IP for"
prefix=${text%%$search*}
echo ${#prefix}
Run Code Online (Sandbox Code Playgroud)