带有单行标志的正则表达式命令行

标签 regex perl sed

我需要在 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/

相关文章:

javascript - 使用正则表达式查找 URL 中的特定字符串

perl - 在 Perl 中,如何在数组中找到给定值的索引?

bash - 从目录中的所有文件中删除字符串

php - 从文本中过滤坏词

c++ - Regex_search C++

perl - Jenkins - 管道和自由式构建的不同结果(纸箱安装无法安装某些模块)

perl - Spreadsheet::WriteExcel 未使用 merge_range 在 Excel 中写入字符串

regex - 为什么我在 eshell 中使用 sed 会得到奇怪的结果?

linux - 使用文件 B 的引用更新 json 文件 A 的值

jQuery 预替换