0

我有一个包含诸如“ Profile - -Server-FAILUre-tESt Exception Type - timeOverThreshold Description - High CPU eHealth Alarm ID - 1000001”之类的内容的字符串

我需要在单词描述之后和警报 ID 之前提取字符串。我在下面的写作中确实得到了一些帮助,但似乎没有用。有人可以看看这个并帮助我。ALARM_TITLE 的结果是空白的,我没有看到任何问题,但我肯定在正则表达式中遗漏了一些东西。

ALARM_TITLE=$(echo "$EVENTMSG" | sed "s/.*Description - \(.*\) Alarm ID.*/\1/")
4

3 回答 3

1

尝试这个:

echo $STRING | grep -oP '(?<=Description - ).*(?=Alarm ID)'

这使用了lookahead 和lookbehind 断言。

于 2013-02-18T13:43:01.413 回答
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 
于 2013-02-18T09:57:50.187 回答
0

尝试:

ALARM_TITLE=${EVENTMSG% Alarm ID*}
ALARM_TITLE=${ALARM_TITLE#*Description - }

- 编辑以回应评论:然后尝试

ALARM_TITLE=${EVENTMSG% eHealth Alarm ID*}
于 2013-02-18T13:34:01.547 回答