我有一个包含“Profile - -Server-FAILUre-tESt Exception Type - timeOverThreshold Description - High CPU eHealth Alarm ID - 1000001
”
我需要在单词Description和Alarm ID之前提取字符串。我在下面写了一些帮助,但似乎没有用。有人可以看看这个并帮助我。 ALARM_TITLE的结果是空白的,我没有看到任何问题,但我肯定在正则表达式中遗漏了一些东西。
ALARM_TITLE=$(echo "$EVENTMSG" | sed "s/.*Description - \(.*\) Alarm ID.*/\1/")
答案 0 :(得分:1)
sed 's/.*Description\(.*\)Alarm.*$/\1/g'
测试:
> echo "Profile - -Server-FAILUre-tESt Exception Type - timeOverThreshold Description - High CPU eHealth Alarm ID - 1000001" | sed 's/.*Description\(.*\)Alarm.*$/\1/g'
- High CPU eHealth
答案 1 :(得分:1)
试试这个:
echo $STRING | grep -oP '(?<=Description - ).*(?=Alarm ID)'
这使用了前瞻和后瞻断言。
答案 2 :(得分:0)
尝试:
ALARM_TITLE=${EVENTMSG% Alarm ID*}
ALARM_TITLE=${ALARM_TITLE#*Description - }
- 编辑以回应评论:然后尝试
ALARM_TITLE=${EVENTMSG% eHealth Alarm ID*}