正则表达式 - Shell中的模式匹配

时间:2015-05-20 21:17:16

标签: shell

我正在尝试匹配模式并提取其后的值。我用下面的正则表达式匹配,它帮助我。当我回复它时,没有值被提取,因为我得到了空白值。

有人让我知道我犯了什么错误。

示例正则表达式:

class="remove_link_style">Site Issue - Please check</a></td><td>    
  <ahref="/0051043899"class="remove_link_style">Working</a></td><td>  
  <ahref="/0051043899"class="remove_link_style">

使用了patten:text=$(echo "class="remove_link_style">Site Issue - Please check</a></td><td><ahref="/0051043899"class="remove_link_style">Working</a></td><td><ahref="/0051043899"class="remove_link_style">" | grep -o --perl-regexp "(?class="remove_link_style")[a-zA-Z0-9_]+"")

我还想提取class="remove_link_style"之后</a></td><td>

之前的字符串

1 个答案:

答案 0 :(得分:1)

我认为你会发现很多参考和建议都没有使用像product_id = <T-Shirt Product ID Here> ProductImage.where(product_id: product_id).group_by(&:name).values 这样的bash工具来解析XML。有了这个上下文,我建议使用任何解析工具,如http://xmlsoft.org/xmllint.htmlhttp://xmlstar.sourceforge.net/doc/xmlstarlet.txt。但是,如果您想快速提取内容,可以将grep/sed/awkgrep结合起来,如下所示。

cut

打印出来:

echo 'class="remove_link_style">GB|Trekkinn-UK|Manualcrawlrequest|1</a></td><td><ahref="/0051043899"class="remove_link_style">WorkInProgress</a></td><td><ahref="/0051043899"class="remove_link_style">' | grep -Eo 'style"[^<>]*>[^<>]+' | cut -f2 -d">"

编辑:根据OP的要求,将输出存储到数组中。

如果您需要将输出存储在数组中,则需要设置IFS,因为元素中有空格。

GB|Trekkinn-UK|Manualcrawlrequest|1
WorkInProgress