是否可以使用正则表达式替换空白行数相同的多行?
在上下文中,我需要更改以下内容:
01 /*------------------------------------
02 Some history stuff goes here
03 Some history stuff goes here
04 Some history stuff goes here
05 Some history stuff goes here
06 Some history stuff goes here
07 --------------------------------------*/
08 int main void()
09 {
10 printf("Hello, World!");
11
12 return 0;
13 }
进入以下内容:
01
02
03
04
05
06
07
08 int main void()
09 {
10 printf("Hello, World!");
11
12 return 0;
13 }
现在我只有以下正则表达式模式,但是它只用一行替换01-07行:
\/\*.*?\*\/
(. matches newline checked)
如果有帮助,我将使用Notepad ++的“在文件中查找”功能,因为我需要在一个文件夹中的多个文件中使用它。
答案 0 :(得分:1)
由于您使用的是notpad++
,所以我假设您使用的是Windows。您可能需要使用电源外壳来实现此目的。
首先逐行读取文件,找到here
$reader = [System.IO.File]::OpenText("my.log")
while($null -ne ($line = $reader.ReadLine())) {
$line
}
然后当行以/*
开头并以*/
,源here结束时行一些逻辑
$Group.StartsWith("/*")
答案 1 :(得分:1)
此perl单行代码可完成此工作:
perl -ne 'if (/\/\*/ .. /\*\//) {print "\n"} else {print}' file > output
在Windows下,用双引号更改单引号
perl -ne "if (/\/\*/ .. /\*\//) {print \"\n\"} else {print}" file > output