我的示例字符串如下:
"firstName":"Alice", "dealersCode":850503,"productCode":"99110X0"
我想从850503
中提取dealersCode
。为此,我使用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。
我应该怎么解决?
预先感谢
答案 0 :(得分:1)
感谢anubhava,我用以下方法解决了我的问题:
sed 's/^.*"dealersCode":\([0-9]*\).*/\1/'
答案 1 :(得分:1)
如果找到字符串:
GNU grep
的工作原理:
grep -wo '[0-9]*' <<< \
'"firstName":"Alice", "dealersCode":850503,"productCode":"99110X0"'
如果字符串可能不存在,那更好:
grep 'dealersCode[^,]*,' | grep -wo '[0-9]*' <<< \
'"firstName":"Alice", "dealersCode":850503,"productCode":"99110X0"'