Извлечь строку в linux сценарии оболочки - PullRequest
0 голосов
/ 04 апреля 2020

Ребята, у меня есть строка, подобная этой:

variable='<partyRoleId>12345</partyRoleId>'

я хочу извлечь значение, чтобы на выходе было 12345.

Обратите внимание, тег может быть в любой форме: <partyRoleId> или <ns1:partyRoleId>

Есть идеи, как получить значение тега, используя только grep или sed?

Ответы [ 2 ]

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

Используйте синтаксический анализатор XML для извлечения значения:

echo "$variable" | xmllint -xpath '*/text()' -

Вы, вероятно, должны использовать его для всего документа XML вместо того, чтобы в любом случае извлечь из него одну строку из переменной.

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

, чтобы использовать только grep, вам нужно regexp, чтобы найти первые закрывающие скобки и вырезать все цифры:

echo '<partyRoleId>12345</partyRoleId>'|grep -Po ">\K\d*"

-P означает, что PCRE -o сообщает grep, чтобы показать только соответствующий шаблон, а специальный \ K сообщает grep все до этого обрезал.

...