0

因为图片(或示例)价值超过千字,我将使用一个示例:

RewriteRule ^/products/([0-9]+)$ /content.php?id=$1

在这个 RewriteRule 示例中,我们有简单的正则表达式。$1 是对 ([0-9]+) 捕获的东西的引用,因此如果匹配存在,它是对某个数字的引用。是否可以在 grep 中做类似的事情?

比方说,一些 xml 文档包含以下内容:

<someTag>someValue</someTag>

我只想提取someValue,但输入second_bash_script以下内容:

first_bash_script | grep "<someTag>\([[:digit::]]\)\+</someTag>" | second_bash_script

someValue。是否可以使用 grep仅提取someValue ?

感谢您提供任何线索!

4

1 回答 1

1

这是两个不同的问题,对吧?

第一个的答案是: use sedgrep不做替换。

sed 's_^/products/\([0-9]\+\)_/content.php?id=\1_g'

第二件事可以通过grep使用 Perl 正则表达式来完成:

$ echo '<someTag>42</someTag>' | grep -oP '(?<=<someTag>)\d+(?=</someTag>)'
42
于 2012-06-04T15:18:29.553 回答