【问题标题】:Creating an alias with grep command that contains single quotes使用包含单引号的 grep 命令创建别名
【发布时间】:2019-10-07 15:37:05
【问题描述】:

我正在尝试为以下内容设置别名:

jq | grep -Eo '(http|https)://[^"]+'

但是当我使用时:

alias xxx="jq | grep -Eo '(http|https)://[^"]+'"

我收到一个错误:S

有没有办法可以用它创建别名?

任何帮助将不胜感激 - 感谢您的时间:)

【问题讨论】:

  • 你需要 grep 做什么?
  • 引用手册:For almost every purpose, aliases are superseded by shell functions。有了函数,这很简单。
  • 请注意,文档至少从 1996 年就已经说明了别名。
  • @oguzismail 我正在将 JSON 输出传送到此别名。对不起,威廉,我还在学习。

标签: bash terminal grep jq


【解决方案1】:

别名正文有引号(在[^"]中,必须转义,否则会终止打开正文的引号。

alias xxx="jq | grep -Eo '(http|https)://[^\"]+'"

【讨论】:

    【解决方案2】:

    在大多数情况下,如果您要使用 jq,最好还是使用 jq 来进行字符串匹配。假设您对碰巧看起来像 URL 的键名不感兴趣,您可以考虑使用如下内容:

    function xxx {
     jq -r '.. | strings | capture("(?<x>(http|https)://[^\"]+)") | .x'
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      • 1970-01-01
      • 2021-02-22
      • 2020-07-25
      • 1970-01-01
      • 2016-10-17
      • 2016-11-24
      相关资源
      最近更新 更多