使用 expr 和正则表达式提取 linux 中的子字符串
Extracting substring in linux using expr and 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”之间没有用 space(或制表符)分隔。修复后,正则表达式有一个尾随空白,这将阻止它匹配。解决这两个问题后,您的示例脚本将按预期工作。
所以我才刚刚开始学习正则表达式。我必须在一个大字符串中提取一个子字符串。
我的字符串基本上是包含很多东西的一大行。我已经确定了我需要提取的模式。我需要这一行的数字 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”之间没有用 space(或制表符)分隔。修复后,正则表达式有一个尾随空白,这将阻止它匹配。解决这两个问题后,您的示例脚本将按预期工作。