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/'
如果要找到字符串,请执行以下操作:
- 当然存在于字符串中
- 这是第一组数字
grep
工作:
grep -wo '[0-9]*' <<< \
'"firstName":"Alice", "dealersCode":850503,"productCode":"99110X0"'
grep-wo'[0-9]*'如果要找到字符串:
- 当然存在于字符串中
- 这是第一组数字
GNUgrep
工作:
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不起作用。看起来语法有问题