我想用sed或perl替换多行字符串

我想用sed或perl替换多行字符串,perl,sed,Perl,Sed,我想删除: , .rdt(rdt) 原文: .colldisn(1'b0), .rdt(rdt) 而.colldisn可以是各种文本 因此,我有很多包含此子字符串的文件,我想删除它。在Perl中应该很容易:只需将前一行保留在变量中即可。如果遇到.rdt(rdt),请检查前一行是否以逗号结尾。如果是这样,请打印前一行,不带逗号,并忽略当前行,否则打印前一行。不要忘记在文件末尾输出最后一行。在Perl中应该很容易:只需将前一行保留在变量中即可。如果遇到.rdt(rdt),请检查

我想删除:

         ,
.rdt(rdt)
原文:

.colldisn(1'b0),
.rdt(rdt)
.colldisn
可以是各种文本


因此,我有很多包含此子字符串的文件,我想删除它。

在Perl中应该很容易:只需将前一行保留在变量中即可。如果遇到
.rdt(rdt)
,请检查前一行是否以逗号结尾。如果是这样,请打印前一行,不带逗号,并忽略当前行,否则打印前一行。不要忘记在文件末尾输出最后一行。

在Perl中应该很容易:只需将前一行保留在变量中即可。如果遇到
.rdt(rdt)
,请检查前一行是否以逗号结尾。如果是这样,请打印前一行,不带逗号,并忽略当前行,否则打印前一行。不要忘记输出文件末尾的最后一行

sed -e ':a;N;$!ba;s/,\n.rdt(rdt)//g' tst.txt
如果您的文件是
tst.txt
,要写入同一个文件,请不要忘记添加
-i
选项

:a;N、 美元!ba将让你完成你想要的,就是比较几行

如果您的文件是
tst.txt
,要写入同一个文件,请不要忘记添加
-i
选项

:a;N、 美元!ba
可以让你完成你想要的,就是比较几行。

这可能适合你(GNU-sed):

如果要保留空格和换行符:

sed '$!N;s/,\(\s*\n\s*\)\.rdt(rdt)/\1/;P;D' file
这可能适用于您(GNU-sed):

如果要保留空格和换行符:

sed '$!N;s/,\(\s*\n\s*\)\.rdt(rdt)/\1/;P;D' file
myscript:

#!/usr/bin/perl -i.bak

undef $/;                   # get all the text
while(<>){ 
  s/,\n\.rdt\(rdt\)//g; 
  print;
}
更改当前目录中的所有txt文件。
sed也有类似的开关。

myscript:

#!/usr/bin/perl -i.bak

undef $/;                   # get all the text
while(<>){ 
  s/,\n\.rdt\(rdt\)//g; 
  print;
}
更改当前目录中的所有txt文件。

sed也有类似的开关。

您是在shell中运行还是在文件中运行?shell在多个文件上可以发布您试图使用的命令吗?请记住,如果您运行的是perl脚本,您需要转义一些字符,这样做:
`sed-e':A;N、 \$!文学士;s/,\\n.rdt(rdt)//g'tst.txt`
sed-e:a;N、 美元!文学士;s/,\n.rdt(rdt)//g'*ba:未找到事件。让我们尝试一些不同的方法:
sed-e'n;s/,\n.rdt(rdt)//g;PD'*
,稍微改变一下@potong脚本您是在shell中运行还是在文件中运行?shell在多个文件上您可以发布您试图使用的命令,并且记住,如果您运行的是perl脚本,您需要转义一些字符,如下所示:
`sed-e':a;N、 \$!文学士;s/,\\n.rdt(rdt)//g'tst.txt`
sed-e:a;N、 美元!文学士;s/,\n.rdt(rdt)//g'*ba:未找到事件。让我们尝试一些不同的方法:
sed-e'n;s/,\n.rdt(rdt)//g;PD'*
,稍微改变一下@poton脚本