需要处理 50 多个文件,把「阅读(...)」后面的内容全部删去:
文档像是这样:
文章正文……
阅读(...) | 评论(...)
(后面一堆无用的内容)
我尝试了正则表达式,但是结果发现:
➜ grep -n "阅读(.*" 3604941420111111104532711.html
41:阅读(362)| 评论(76)
正则表达式只能返回一行的内容,而不是这一行之后的所有内容,无法满足需求。
请问用什么正则表达式可以解决?或是有其他的办法吗?
grep 没这个功能貌似。
grep -Pzo '(?s)a.*b' <file>
好像可以匹配
a
cccccc
dddddd
b
这样的玩意儿……
使用 Perl
模式。
看样子你需要的不是跨行正则表达式吧……
你需要的是不是删除匹配的那一行之后的内容?那样可以考虑获取匹配的那一行的行号,删除剩下的行号比它更大的行。
举个例子,你可以用sed
这么做:
sed -i "/阅读(.*/q" 3604941420111111104532711.html
可能需要写程序,读入文件为字符串吧。