所以我才刚刚开始学习正则表达式。我必须在大字符串中提取一个子字符串。
我的弦基本上是一条包含很多东西的大行。我已经确定了需要提取的模式。我需要此行中的数字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”没有用空格(或制表符)分隔。修复该问题后,正则表达式的尾随空白将阻止其匹配。解决了这两个问题后,示例脚本将按预期工作。
关于regex - 使用expr和regex在Linux中提取子字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28522326/