【发布时间】:2018-08-30 19:56:48
【问题描述】:
我的示例字符串如下:
"firstName":"Alice", "dealersCode":850503,"productCode":"99110X0"
我想从dealersCode 中提取850503。为此,我使用 sed 尝试了以下正则表达式:
sed -n 's/.*dealersCode:\([0-9][0-9][0-9][0-9][0-9][0-9]*\).*/\1/p'
上面的命令什么也没打印,所以我相信我做错了什么。我在https://regex101.com/ 上创建了以下正则表达式:
(?:\"dealersCode|\')(?<key>[^"]*)(?:\"|\')(?=:)(?:\:\s*)(?:\"|\')?(?<value>true|false|[0-9a-zA-Z\+\-\.\$]*)
它不适用于 bash。
我应该怎么做才能解决这个问题?
提前致谢
【问题讨论】:
-
您可以使用:
sed 's/^.*"dealersCode":\([0-9]*\).*/\1/' -
或
grep -oP '"dealersCode":\K[0-9]+'。 -
字符串的片段部分是否包含一些 JSON 数据?如果是这样,请使用 jq,而不是 sed。
-
@anubhava,非常感谢,工作完美
-
@PesaThe,这个 grep 不起作用。看起来语法有问题