【发布时间】:2020-10-22 18:20:34
【问题描述】:
我需要从与 REGEX 模式匹配的文本文件中删除字符串,使用 regex101 我的模式匹配工作正常,但是当我使用 sed 执行时,没有任何内容被删除,并且由于某种原因正则表达式不起作用:
https://regex101.com/r/oLNrDB/1/
我需要删除所有出现的所有文本,包括以下 2 个字符串之间的换行符:
DELIMITER ;;
some text with newlines
DELIMITER ;
我使用的 sed 命令是:
sed '/DELIMITER ;;[\S\s]*?DELIMITER ;/d' myfile.sql;
但输出与输入文件相同,我做错了什么?
【问题讨论】:
-
这能回答你的问题吗? sed multiline delete with pattern
-
另见:Why does my regular expression work in X but not in Y? ...假设您使用的是
GNU sed,则不能在字符类中使用\s或\S..并且不支持非贪婪..另外,sed默认情况下一次只工作一行,因此如果没有更多选项/命令,您将无法跨行匹配。您可以使用perl -0777来更好地匹配而不是sed -
基于 regex101 示例,stackoverflow.com/questions/38972736/… 是一个更好的选择,而不是纯正则表达式解决方案