![bash-字符串操作获取子字符串之前或之后的字符串](https://linux22.com/image/1474895/bash-%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%93%8D%E4%BD%9C%E8%8E%B7%E5%8F%96%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B9%8B%E5%89%8D%E6%88%96%E4%B9%8B%E5%90%8E%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
大家好
这是一个新手问题,但我似乎在任何地方都找不到答案。其他函数,如“cut”或“awk”或“sed”,总是被提及,但从来没有使用字符串表达式函数(我认为它被称为)
string="hi this is a string.and.it has no purpose other than being here"
searchstring="and"
temp=${string#*$searchstring} # this means everything after "and" will be inserted into temp
echo $temp = "hi this is a string."
但是假设我想要“and”之前的所有内容,并使用与获取临时变量结果相同的方法,因此我想要
echo $temp = ".it has no purpose other than being here"
我努力了
temp=${string%*$searchstring} (as I understand, # is from front and % is back)
但这只会返回未改变的字符串内容
另外,手册页,这个字符串表达式函数叫什么,我在哪里可以找到更深入的信息?
答案1
您必须将星号放在字符串的另一端。
星号代表“随便”,所以
${string%$searchstring*}
意思是“从现在起删除string
一切searchstring
”。
man bash
这在“参数扩展”中有记录。