我需要在 bash
中使用正则表达式用于替换文件中可能位于多行的文本的脚本。
我会通过 s
作为我知道的其他正则表达式引擎中的标志,但我很难使用 bash。
sed
据我所知不支持此功能。
perl
它显然可以,但我不能让它在一个类轮上工作
perl -i -pe 's/<match.+match>//s $file
示例文本:
DONT_MATCH
<match some text here
and here
match>
DONT_MATCH
最佳答案
默认情况下,.
不匹配换行符。 s
只是让 .
匹配任何字符。
您一次读取一行文件,因此您不可能匹配跨越多行的内容。使用 -0777
将整个输入视为一行。
perl -i -0777pe's/<match.+match>//s' "$file"
关于带有单行标志的正则表达式命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63385953/