【问题标题】:sed: -e expression #1, char 27: invalid reference \1 on `s' command's RHSsed: -e 表达式 #1, char 27: 's' 命令的 RHS 上的无效引用 \1
【发布时间】:2018-03-03 02:13:46
【问题描述】:
echo $variable = {"name":"AAA","username":"BBB"}

我只想从上面的输出中过滤BBB。我用过这个 sed 命令:

sed 's/."username":"(["])".*/\1/')

我得到了

sed: -e expression #1, char 27: `s' 命令的 RHS 上的无效引用 \1

我该如何解决这个问题?

【问题讨论】:

  • 您应该使用 JSON 解析器,例如 jq 来解析 JSON:jq -r '.username' <<< "$variable"

标签: linux sed


【解决方案1】:

这仅匹配 BBB 部分。逃脱你的父母。 假设这是 JSON,您要查找的值中不会有任何引号(因为它是引号分隔的)所以我将 BBB 部分与 [^"]* 匹配,这是任意数量的非引号字符.

variable='{"name":"AAA","username":"BBB"}'
echo "$variable" |sed 's/.*"username":"\([^"]*\)".*/\1/'

【讨论】:

    猜你喜欢
    • 2017-05-02
    • 2013-05-14
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2021-02-07
    • 2021-06-26
    • 2019-03-17
    相关资源
    最近更新 更多