/ / Skrypt powłoki Linux = grep -o -P 'FE =. *? „nie działa - linux, bash, shell

Linux Shell Script = grep -o -P 'FE =. *? "nie działa - linux, bash, shell

Nadal mylę się z tym, co robię źleautomatyzuję git push pull i piszę posta, niżej wymieniony dziennik zatwierdzenia sklepu liniowego od końca dewelopera w pliku, ale co robi źle, to tylko sklep FE= .Czy chcę go przechowywać FE="anything that developer write here".

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

Odpowiedzi:

2 dla odpowiedzi № 1

Jeśli chcesz dopasować FE=value powinieneś usunąć -o flag w grep. Porównać:

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

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

Jeśli jest tylko jedna deklaracja na linię, nie ma potrzeby używania leniwego kwantyfikatora .*?. Możesz użyć .* i upuść -P flaga:

$grep "FE=.*" <<< "FE=some text here"
FE=some text here

1 dla odpowiedzi nr 2

Nie widzę nic złego w twoim kodzie. Grep zwróci ciąg znaków FE=, a następnie (opcjonalnie) niepuste znaki, a następnie spacja. Na przykład, jeśli po spacji pojawi się spacja FE=, tak jak w

xxxx FE= anything that developer write here

dostaniesz tylko FE = (z końcową spacją), podczas gdy linia

xxxx FE=anything that developer write here

dałbym ci FE = cokolwiek (ponownie z końcową spacją).

BTW, podczas gdy flaga -P nie jest błędna, -E byłoby wystarczające w twoim przypadku.