代码之家  ›  专栏  ›  技术社区  ›  mrjimoy_05

Bash regex提取特定字符串后引号内的值

  •  0
  • mrjimoy_05  · 技术社区  · 4 年前

    我想从curl中提取控制台文本中“job”的值,它是: ix90CvhtaWfMhNiIy3RDbr2lJ2pRzGxBqHSiDq5OcI

    95 28.2M     0     0   95 27.0M      0  1091k  0:00:26  0:00:25  0:00:01 2910k
    100 28.2M    0    52  100 28.2M      1  1108k  0:00:26  0:00:26 --:--:-- 2887k
    100 28.2M    0    52  100 28.2M      1  1108k  0:00:26  0:00:26 --:--:-- 2965k
    {"job":"ix90CvhtaWfMhNiIy3RDbr2lJ2pRzGxBqHSiDq5OcI"}
    [Pipeline] }
    [Pipeline] // dir
    [Pipeline] }
    

    我正在使用此命令提取值:

    curl -v --silent 'link-to-consoleText' 2>/dev/null | grep -Eo '("job":\"[^"]*\")' | head -n1 | awk -F' = ' '{ print $1 }'
    

    当前正则表达式的使用: ("job":\"[^"]*\") ,但它提取了: "job":"ix90CvhtaWfMhNiIy3RDbr2lJ2pRzGxBqHSiDq5OcI" .

    如何只提取价值?谢谢

    1 回复  |  直到 4 年前
        1
  •  1
  •   Diego Torres Milano    4 年前

    如果您正在使用awk,则无需grep,请尝试以下方法:

    curl -v --silent 'link-to-consoleText' 2>/dev/null | awk -F'"' '/job/ {print $4}'