Regex 使用sed从字符串中提取值

Regex 使用sed从字符串中提取值,regex,bash,sed,Regex,Bash,Sed,我的示例字符串如下所示: "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' 上面的命令没有打印任何内容,因此我认为我做错了什么。我在上创建了以下正则表达式: (?:\“dealersCod

我的示例字符串如下所示:

"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'
上面的命令没有打印任何内容,因此我认为我做错了什么。我在上创建了以下正则表达式:

(?:\“dealersCode”\)(?[^”]*(?:\“\”)(?=:)(?:\:\s*)(?:\“\”))(?:\”)(?真|假|[0-9a-zA-Z\+-\.$*))
它对bash不起作用

我该怎么解决这个问题

提前感谢

感谢,我用以下方法解决了我的问题:

sed 's/^.*"dealersCode":\([0-9]*\).*/\1/'
多亏了,我用以下方法解决了我的问题:

sed 's/^.*"dealersCode":\([0-9]*\).*/\1/'

如果要找到字符串,请执行以下操作:

  • 当然存在于字符串中
  • 这是第一组数字
GNU
grep
工作:

grep -wo '[0-9]*' <<< \
   '"firstName":"Alice", "dealersCode":850503,"productCode":"99110X0"' 

grep-wo'[0-9]*'如果要找到字符串:

  • 当然存在于字符串中
  • 这是第一组数字
GNU
grep
工作:

grep -wo '[0-9]*' <<< \
   '"firstName":"Alice", "dealersCode":850503,"productCode":"99110X0"' 

grep-wo'[0-9]*'您可以使用:
sed's/^.*“dealersCode”:\([0-9]*\)./\1/'
grep-oP''dealersCode:\K[0-9]+'
。这个片段是包含一些JSON数据的字符串的一部分吗?如果是这样,请使用jq,而不是sed。@anubhava,非常感谢您的帮助,成功了flawlessly@PesaThe,这个grep不起作用。您可能使用的语法似乎有问题:
sed's/^.*“dealersCode”:\([0-9]*\)./\1/'
grep-oP'.dealersCode:\K[0-9]+'
。该片段是包含一些JSON数据的字符串的一部分吗?如果是这样,请使用jq,而不是sed。@anubhava,非常感谢您的帮助,成功了flawlessly@PesaThe,这个grep不起作用。看起来语法有问题