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

时间:2015-02-15 02:00:30

标签: regex linux substring expr

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

我的字符串基本上是一个包含很多东西的大行。我已经确定了我需要提取的模式。我需要这一行中的数字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的数字包括在内,包括空格。

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

感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

语法错误是因为&#34;:&#34;没有与&#34; $ p&#34;分开通过空格(或标签)。修复后,正则表达式有一个尾随空白,可以防止匹配。修复这两个问题,您的示例脚本按预期工作。