2017-01-03 2 views
1

У меня есть выход однолинейного следующегопечать многозначная после сопоставления с образцом в одной строке

"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 

I попытались следовать, но только его соответствие шаблону печати,

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" 
+0

Что вы пытались? – Inian

+0

попробовал, но только для печати, только соответствующий шаблону печати, cat myfile.txt | Grep -PO '(нг-пользователь num_sta.) [^ \ s] * ВЫВОД: нг-пользователь num_sta " нг-пользователь num_sta" нг-пользователь num_sta» нг-user- num_sta " ng-user-num_sta" ng-user-num_sta " ng-user-num_sta" ng-user-num_sta " –

ответ

1

Ваш regEx матч неверен, используйте GNU grep с -P, режим PCRE включен в качестве и \K игнорировать матч шаблон вверх в этой точке.

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

Проверить regExhere.

+0

Это сработало. Thx Mr @Inian :) –

+1

Я предлагаю заменить ',' на один пробел, чтобы избавиться от завершающего пробела. – Cyrus

0

Это нормально?

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

5 
10 
15 
3 
+0

OP хочет получить значения для 'ng-num_sta' только ... ваши значения для _lines, которые не соответствуют' xyz'_; в то время как ваш ответ дает правильный результат в небольшом примере, предоставленном OP, вы, конечно, не отвечаете на вопрос. Я имею в виду следующее: что, если я ответил 'printf '% s \ n' 5 10 15 3'. Это даст правильный ответ в случае примера OP, но это, безусловно, не будет правильным ответом. –

Смежные вопросы