在单行中匹配模式后打印多值

时间:2017-01-03 07:39:34

标签: bash

我有单行输出如下

"ng-num_sta" : 5 , 
"ng-num_sta" : 10 ,
"ng-num_sta" : 15 , 
"ng-num_sta" : 3 , 
xyz value : 1 , blah blah, single line

我想只获取字符串ng-num_sta的值

示例:

5
10
15
3

我尝试了以下功能,但其打印模式仅匹配,

 cat myfile.txt | grep -Po '(ng-user-num_sta.)[^\s]*'

输出:

ng-user-num_sta"
ng-user-num_sta"
ng-user-num_sta"
ng-user-num_sta"
ng-user-num_sta"
ng-user-num_sta"
ng-user-num_sta"
ng-user-num_sta"

2 个答案:

答案 0 :(得分:1)

您的regEx匹配不正确,使用GNU grep -PPCRE模式启用,而\K忽略模式匹配到该点

grep -oP '\"ng-num_sta\" : \K[^ ]*' file
5
10
15
3

检查regEx here

答案 1 :(得分:0)

这样好吗?

awk '$1 ~ /ng-num_sta/{print $3}' file

5
10
15
3
相关问题