0

我想删除:

         ,
.rdt(rdt)

来自文本:

.colldisn(1'b0),
.rdt(rdt)

.colldisn 可能是各种文本。

所以,我有很多带有这个子字符串的文件,我想删除它。

4

4 回答 4

2

这可能对您有用(GNU sed):

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

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

sed '$!N;s/,\(\s*\n\s*\)\.rdt(rdt)/\1/;P;D' file
于 2013-11-14T09:16:04.553 回答
2
sed -e ':a;N;$!ba;s/,\n.rdt(rdt)//g' tst.txt

你的文件在哪里tst.txt,要写入同一个文件,不要忘记添加-i选项。

:a;N;$!ba;会让你完成你想要的,女巫就是比较几行。

于 2013-11-14T08:57:28.150 回答
0

脚本:

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

undef $/;                   # get all the text
while(<>){ 
  s/,\n\.rdt\(rdt\)//g; 
  print;
}

“-i.bak”更改原始“文件”但创建“file.bak”副本。这样你就可以使用

myscript *.txt

更改当前目录中的所有 txt 文件。
sed 也有类似的开关。

于 2013-11-14T13:25:24.423 回答
0

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

于 2013-11-14T08:53:10.407 回答