首页 > 解决方案 > 为什么来自 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

为什么?

标签: regexgitgrepsh

解决方案


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

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

小改动:-hgrep 标准输入时不需要。引用模式以防止 shell 扩展通配符。


推荐阅读