在linux中使用expr和regex提取子字符串



所以我刚刚开始学习正则表达式。我必须在一个大字符串中提取一个子字符串。

我的绳子基本上是一条巨大的线,里面有很多东西。我已经确定了需要提取的模式。我需要这行的号码A lot of stuff<li>65,435 views</li>a lot of stuff这个号码只是举个例子。

整个字符串实际上是一个大行,我的文件views.txt包含了很多这样的行。

所以我试过了,

while read p
do
y=`expr "$p": ".*<li>(.*) views "`
echo $y
done < views.txt

我希望在这个views.txt文件中迭代所有这样的行,并打印出数字。

我得到了一个语法错误。我真的不知道这里出了什么问题。我相信我已经用<li>views(包括空格)正确地将数字置于两边。

我对上述正则表达式的(有限的)解释使我相信它会输出数字。

感谢您的帮助。

语法错误是因为":"与"$p"没有用空格(或制表符)分隔。修复后,正则表达式有一个尾部空白,这将阻止它匹配。解决了这两个问题,您的示例脚本可以按预期工作。

相关内容

  • 没有找到相关文章

最新更新