как получить (grep / awk / sed) подстроку из строки значение в оболочке - PullRequest
0 голосов
/ 04 марта 2020

Новое в сценариях. У меня есть только одна строка и один файл. Как получить значение Summerfruit (ie "man go") и передать его другой переменной из строки ниже.

.. ab c .dfe summer.fruit = man go summer.vegetarian = potato projects.blah ...

1 Ответ

0 голосов
/ 04 марта 2020

Если ваш grep поддерживает Perl -совместимые регулярные выражения (PCRE):

summerfruit=$(grep -Po 'summer\.fruit=\K[^ ]+' file)

\K не печатает совпадающие summer.fruit= и [^ ]+ соответствует одному или нескольким непробельные символы после =.

без PCRE:

summerfruit=$(grep -o 'summer\.fruit=[^ ]*' file | grep -o '[^=]*$')

с sed:

summerfruit=$(sed 's/.*summer\.fruit=\([^ ]*\).*/\1/' file)

с awk:

summerfruit=$(awk '{
  for (i=1;i<=NF;i++)
    if ($i ~ /^summer\.fruit=/){ sub(/^[^=]*=/,"",$i); print $i; exit }
}' file)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...