regex - 为什么来自 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'
小改动:-h
grep 标准输入时不需要。引用模式以防止 shell 扩展通配符。
推荐阅读
- javascript - 如何在javascript中“+”号后解析一个带有零的数字?
- laravel - 是否有可能在 Laravel 控制器中显示公用文件夹中的图像?
- macos - 如何在 Mac 上查看所有格式的剪贴板
- python-3.x - 如何在 asyncssh.run("sudo su") 上输入密码并继续输入命令?
- c# - URL 中的 ServiceStack 会话 ID
- typescript - 记录之间的区别
和 [key: string]: 类型 - rust - 如何创建所有子命令都是可选的 StructOpt 命令
- ibm-mq - 命令 mqreply.c 超时
- vue.js - Chrome 调试器在断点处跳转到错误的文件
- mongodb - mongo 4.4 中是否存在 mongorestore.exe 文件?