为什么这个来自 Git LS-Remote 的正则表达式无法正常工作?



如果我这样做:

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

为什么?

"from"行转到stderr,因此grep忽略了它。将 stderr 重定向到 stdout 以通过管道将其传输到 grep:

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

细微更改:在 grreping stdin(标准(时不需要-h。引用用于防止 shell 扩展通配符的模式。

最新更新