bash-字符串操作获取子字符串之前或之后的字符串

bash-字符串操作获取子字符串之前或之后的字符串

大家好

这是一个新手问题,但我似乎在任何地方都找不到答案。其他函数,如“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这在“参数扩展”中有记录。

相关内容