2013-02-18 128 views
0

我写一个shell脚本,在我需要匹配一些帮助和提取模式正则表达式匹配和提取

ALARM_TYPE contain string 'Exception Type - timeOverThreshold Description - High CPU eHealth Alarm ID - 1000001' 

我需要Description -Alarm ID之前提取字符串,并将其存储在一个新varaible ...特别是在这个例子中,我正在寻找High CPU eHealth

我该怎么做只是做awksed工程或任何其他简单的事情。

回答

1

这里有你想要使用GNU grep做什么直译:

var=$(grep -oP "(?<=Description -).*(?= Alarm ID)" file) 

或者与sed

var=$(sed 's/.*Description - \(.*\) Alarm ID.*/\1/' file) 

测试:

echo "$var" 

结果:

High CPU eHealth 

你可以阅读更多有关前瞻与回顾后assersions here。 HTH。

+0

感谢史蒂夫但不是文件中的字符串orignally存储在一个变量$ ALARM_TYPE,不低于片段看起来不错 VAR = $(回声 “$ ALARM_TITLE” | sed中的/.*描述 - \(。 * \)报警ID。*/\ 1 /'“) – Nik 2013-02-18 08:35:34

+0

任何想法应该如何处理这个... nstead文件字符串被存储在一个变量$ ALARM_TYPE,下面的代码片段看起来不错var = $(回声“$ ALARM_TITLE”| sed's /.*描述 - (。*)警报ID。*/\ 1 /'“) – Nik 2013-02-18 09:18:08

+0

@Nik:试试这个:var = $(echo”$ alarm_title“| sed's /如果你的shell允许:var = $(sed's /.*描述 - \(。* \)*。* )Alarm ID。*/\ 1 /'<<<“$ alarm_title”)' – Steve 2013-02-18 09:38:40

0
sed 's/.*Description\(.*\)Alarm.*$/\1/g'