grep для шаблона со специальным символом и выводить только совпадающую строку - PullRequest
0 голосов
/ 02 апреля 2020

Team,

Я хочу выполнить grep для контейнера подстроки, а затем выводить только эту строку, а не всю строку. как я могу? Я знаю, что могу использовать awk для пробела и использовать $, но хочу знать, как это сделать в grep?

echo $test_pods_info | grep -F 'test-'

output

test-78ac951e-89a6-4199-87a4-db8a1b8b054f export-9b55f0d5-071d-431-1d2ux0-avexport-xavierisp-sjc4--a4dd85-102 1/1 Running 0 19h

ожидаемый результат

test-78ac951e-89a6-4199-87a4-db8a1b8b054f

Ответы [ 3 ]

2 голосов
/ 02 апреля 2020

awk больше подходит для этого, так как вы хотите получить первое поле в соответствующей строке:

awk '/test-/{print $1}' <<< "$taxIncluded"

test-78ac951e-89a6-4199-87a4-db8a1b8b054f

Если вы действительно хотите использовать grep тогда это может быть то, что вы ищете:

grep -o 'test-\S*' <<< "$taxIncluded"

или:

grep -o 'test-[^[:space:]]*' <<< "$taxIncluded"
0 голосов
/ 02 апреля 2020

понял это ..

echo $test_pods_info | grep -o "\test-\w*-\w*\-\w*\-\w*\-\w*"

outoput

test-78ac951e-89a6-4199-87a4-db8a1b8b054f

но я sh есть простой способ. как \ тест - * \

0 голосов
/ 02 апреля 2020

Попробуйте

echo $test_pods_info | grep -o 'test-'

опция -o:

, показывающая [ing] только часть строки, соответствующую PATTERN

согласно grep --help. Конечно, это будет печатать только test-, поэтому вам нужно переделать ваше регулярное выражение:

grep -oE '(test).*[[:space:]]\b'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...