正则表达式如何跨行使用?


需要处理 50 多个文件,把「阅读(...)」后面的内容全部删去:

文档像是这样:

文章正文……

阅读(...) | 评论(...)

(后面一堆无用的内容)

我尝试了正则表达式,但是结果发现:


 ➜  grep -n "阅读(.*" 3604941420111111104532711.html
41:阅读(362)| 评论(76)

正则表达式只能返回一行的内容,而不是这一行之后的所有内容,无法满足需求。

请问用什么正则表达式可以解决?或是有其他的办法吗?

正则表达式 grep shell

狂战拯救世界 10 years, 8 months ago

看样子你需要的不是跨行正则表达式吧……

你需要的是不是 删除匹配的那一行之后的内容 ?那样可以考虑获取匹配的那一行的行号,删除剩下的行号比它更大的行。

举个例子,你可以用 sed 这么做:


 sed -i "/阅读(.*/q" 3604941420111111104532711.html

呆叔在呆弯 answered 10 years, 8 months ago

Your Answer