Sed:刮刮一系列数字

时间:2014-07-01 23:29:03

标签: regex bash sed screen-scraping

是否可以在我匹配<strong&gt;的位置指定一系列数字(1-31)标签?输出中的标记显示为:<strong>21. Infinite Safari Balls</strong>

被修改

#!/bin/bash

wget -q -O - 'goo.gl/vfYA94' | \
  sed -En '/<strong>([1-9]|[12][0-9]|3[01])/,/<\/blockquote>/p' | \
  sed -e :a -e 's/<[^>]*>//g;/</N;//ba'

1 个答案:

答案 0 :(得分:0)

根据我的理解,你想要打印出第一行有文本<strong>NN.的行块,其中NN是1到31之间的数字,并且停止下一行包含{{1 }}。 </blockquote>对数字没有很好的理解,但你可以用正则表达式达到你想要的效果:

sed

为了减少正则表达式中反斜杠的数量,我使用wget -q -O - 'goo.gl/vfYA94' | sed -En '/<strong>([1-9]|[12][0-9]|30|31)\./,/<\/blockquote\>/p' 选项来扩展正则表达式。 -E选项在Mac OSX和GNU / Linux上均可识别,尽管-E的GNU版本仅记录sed用于此目的。