regex - 为什么这个来自 git ls-remote 的正则表达式不能正常工作?

标签 regex git grep sh

如果我这样做:

回显来自 ssh://azeaze@azaz.git | grep -oh 来自.* | grep -oh ssh.*git

我得到了异常(exception)情况,即:

ssh://azazaze@azaz.git

但如果我这样做:

git ls-remote | grep -oh 来自.* | grep -oh ssh.*git

我得到以下输出:

来自 ssh://azeaze@azaz.git

为什么?

最佳答案

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

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

小改动:grepping stdin 时不需要 -h。引用模式以防止 shell 进行通配符扩展。

关于regex - 为什么这个来自 git ls-remote 的正则表达式不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59647504/

相关文章:

git - 如何为 jenkins git 插件指定 ssh key

git - 远程 : HTTP Basic: Access denied fatal: Authentication failed

Linux 文件权限的正则表达式(数字符号)

用于 URL 分割的 Python 脚本

Java正则表达式查找占位符中的所有占位符 "{}"

regexp.FindSubmatch 与十六进制字符代码

php - 正则表达式匹配带括号的词边界字符串

git - 删除gitlab上的提交

linux - 如何使用 grep 在当前目录中搜索具有字符串 "hello"但仅显示 .h 和 .cc 文件的所有文件?

regex - 从 mac 上的 bash 中的 xml 中提取值