Скрипт оболочки Linux = grep -o -P 'FE =. *?' не работает - PullRequest
0 голосов
/ 11 мая 2018

Я все еще путаюсь с тем, что я делаю что-то не так, когда я автоматизирую git push pull и записываю сообщение post, нижеприведенный журнал фиксации строки хранилища от конца разработчика в файле, но что он делает неправильно, так это только хранилище FE= .Я хочу сохранить FE='anything that developer write here'.

var_custom_FE_log="$( git log -1 --no-merges $branch | grep -o -P 'FE=.*? ' )

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Я не вижу ничего плохого в вашем коде. grep вернет строку FE=, за которой следуют (необязательно) непустые символы, а затем пробел. Например, если после FE= будет пробел, например, в

xxxx FE= anything that developer write here

вы получите только FE = (с завершающим пробелом), а строка

xxxx FE=anything that developer write here

даст вам FE = что-нибудь (снова с завершающим пробелом).

Кстати, хотя ваш флаг -P не неправильный, -E будет достаточно в вашем случае.

0 голосов
/ 11 мая 2018

Если вы хотите сопоставить FE=value, вы должны удалить флаг -o в grep. Для сравнения:

$grep -o -P 'FE=.*?' <<< "FE=some text here"
FE=

$grep -P 'FE=.*?' <<< "FE=some text here"
FE=some text here

Если в строке только одно объявление, тогда нет необходимости использовать ленивый квантификатор .*?. Вы можете использовать .* и сбросить флаг -P:

$grep 'FE=.*' <<< "FE=some text here"
FE=some text here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...