【发布时间】:2017-11-10 05:35:08
【问题描述】:
我正在尝试找到一个正则表达式,如果特定字符串匹配,我可以删除文件的全部内容。
例如,我的文件内容是:
This is the first line
Here is password=SECRET second line
Here is third line
我正在搜索带有模式 password= 的字符串,当匹配发生时,应从上述文件中删除所有行。
以下命令确实删除了与模式匹配的整行,但我无法找出删除整个内容的正则表达式:
cat test.txt | sed 's|^.*password=.*||'
我理解 sed 逐行工作,除非我在 sed 中使用其他选项,否则我可能无法删除整个内容。
我只对正则表达式感兴趣的原因是我正在使用另一个工具,它使用正则表达式作为输入来执行转换。我这里以 sed 为例来说明我目前所理解的。
【问题讨论】:
-
倒数第二个
|是什么? -
@Rahul 空替换字符串(匹配模式,用空字符串替换)
-
@Aaron 是对的
-
我们需要更多关于您的正则表达式引擎的信息,因为您的正则表达式基本上是正确的。您需要通过一个标志指定
.应该匹配换行符,或者使用一个字符类来匹配所有.匹配加上换行符。编辑:与我之前所说的相反,锚很好 -
@Aaron,正则表达式引擎可能会在全局范围内运行并扫描所有行中的字符串模式,直到 EOF。工具名称是 BFG(用于从 Git 存储库中删除敏感数据)。 stackoverflow.com/questions/4110652/…