почему это регулярное выражение из git ls-remote не работает так, как должно быть? - PullRequest
3 голосов
/ 08 января 2020

если я сделаю:

echo From ssh://azeaze@azaz.git | grep -oh From.* | grep -oh ssh.*git

Я получу то, что исключено, а именно:

ssh://azeaze@azaz.git

, но если я сделаю :

git ls-remote | grep -oh From.* | grep -oh ssh.*git

Я получаю следующий вывод:

From ssh://azeaze@azaz.git

Почему?

1 Ответ

4 голосов
/ 08 января 2020

Строка "from" переходит к stderr, поэтому grep игнорирует ее. Перенаправьте stderr в stdout, чтобы передать его в grep:

git ls-remote 2>&1 | grep -o 'From.*' | grep -o 'ssh.*git'

Незначительные изменения: -h не требуется, когда grep stdin. Шаблоны в кавычках для предотвращения расширения подстановочного знака в оболочке.

...