当前位置: 技术问答>linux和unix
sed如何将文本中相邻两行删除?
来源: 互联网 发布时间:2016-03-10
本文导语: 源数据如下: ten aa tenten bb tenaaaten cc ten ddd mmm aa 两两一对。有两个传入参数,如ten和ddd,只有这两个参数相邻时才把行删除。 应该怎么写? 小弟才入门,查了tr,awk,sed都没搞定,正则表达式也没搞定。我要修改源文件...
源数据如下:
ten
aa
tenten
bb
tenaaaten
cc
ten
ddd
mmm
aa
两两一对。有两个传入参数,如ten和ddd,只有这两个参数相邻时才把行删除。
应该怎么写?
小弟才入门,查了tr,awk,sed都没搞定,正则表达式也没搞定。我要修改源文件,所以不用sed也成,请高手指点。
ten
aa
tenten
bb
tenaaaten
cc
ten
ddd
mmm
aa
两两一对。有两个传入参数,如ten和ddd,只有这两个参数相邻时才把行删除。
应该怎么写?
小弟才入门,查了tr,awk,sed都没搞定,正则表达式也没搞定。我要修改源文件,所以不用sed也成,请高手指点。
|
#!/usr/bin/perl -w
use strict;
my $total=qx(cat test.txt);
my @lines=split(/n/,$total);
my $i=1;
open(DFILE,">"."out.txt")||die "can't creat out file";
foreach my $line (@lines){
if(($line=~/ten/)&&($lines[$i]=~/ddd/)){
print "match and del line".$i."n";
$lines[$i]="";
}
else{
print DFILE $line."n";
}
$i++;
}
close(DFILE);
用perl 搞定,前一段时间也作过这个分析,用来分析log两行关系的
use strict;
my $total=qx(cat test.txt);
my @lines=split(/n/,$total);
my $i=1;
open(DFILE,">"."out.txt")||die "can't creat out file";
foreach my $line (@lines){
if(($line=~/ten/)&&($lines[$i]=~/ddd/)){
print "match and del line".$i."n";
$lines[$i]="";
}
else{
print DFILE $line."n";
}
$i++;
}
close(DFILE);
用perl 搞定,前一段时间也作过这个分析,用来分析log两行关系的