如何在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/

10-11 19:05