2017-02-17 448 views
1

我想从冒号分隔列表中提取版本。我想要的值是,但是有一个名为foo的酒吧导致这两个值返回列表中的其他值。这是我在做什么:grep完全匹配冒号分隔字符串

LIST="foo:1.0.0 
foo-bar:1.0.1" 

VERSION=$(echo "${LIST}" | grep "\bfoo\b" | cut -s -d':' -f2) 

echo -e "VERSION: ${VERSION}" 

输出:

VERSION: 1.0.0 
1.0.1  

注:有时候列表将如下所示,这将导致版本是空的(这是预期)。

LIST="foo 
foo-bar:1.0.1" 
+0

尝试'grep -P“\ bfoo \ b(?! - )”' –

回答

1

您可以使用与-P选项启用PCRE正则表达式,并使用(?!-)负前瞻将在情况下失败的比赛有一个完整的单词foo-

grep -P "\bfoo\b(?!-)" 

online demo