如何在Bash中剪切以下字符串并检索“Not Running”状态。
我尝试过剪切命令,它正在引发异常
前任:
$ echo "NAME(APACHE) STATUS(Not Running)
需要的字符串:
Not Running
最佳答案
使用bash
,regex运算符~
string="NAME(APACHE) STATUS(Not Running)"
[[ $string =~ ^.*STATUS\((.*)\)$ ]] && printf "%s\n" "${BASH_REMATCH[1]}"
Not Running
使用
Awk
作为()
去限制器,echo "NAME(APACHE) STATUS(Not Running)" | awk 'BEGIN{FS="[()]"}{print $4}'
Not Running
使用双重参数替换,因为
bash
不支持嵌套参数扩展,temp1="${string#*)}"
temp2="${temp1%*)}"
printf "%s\n" "${temp2#*STATUS(}"
Not Running
使用
GNU grep
及其PCRE - Perl Compatible Regular Expressions功能,使用-P
标志,grep -oP '.*STATUS\(\K[^\)]+' <<<"$string"
Not Running
关于bash - 如何使用bash命令剪切字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42551518/