我想匹配“current_line ABC/123”和通过只是保持“尺寸”字符串属于它删除它下面ins_bug属于它。如果Current_line不是abc/123,我想打印所有内容。如何匹配字符串,并删除指定的字符串使用Perl
输入
current_line
current_line abc/123/187/
ins_bug {[sgd/hsjfk/123]}
size hkjd/hkjdjl/hjkj
current_line
current_line dsfd
ins_bug {[hds/hdf/123]}
size kjfgkf/hkdjf
current_line
current_line ahd/ijk/
ins_bug {[sgd/hsjfk/123]}
current_line
current_line abc/123/jhk/
ins_bug {[hk/hsjfk/123]}
ins_bug {[hkcd/1235/465]}
size jfkdjgfdl/hkshfhd
ins_bug {[hdkc/563/545]}
size kjfhgkfjglf/hskahfjd
current_line
current_line hjkd
ins_bug {[hds/hdf/123]}
size djfkljlg/hkdsgj
ins_bug [dsf/dfdg/dfdfd]
size dklgfks/jdskljfldlk
current_line
current_line abc/123/897
ins_bug dgds/hsgds/412
size jkjfd/kjdjf
输出
current_line
current_line abc/123/187/
size hkjd/hkjdjl/hjkj
current_line
current_line dsfd
ins_bug {[hds/hdf/123]}
size kjfgkf/hkdjf
current_line
current_line ahd/ijk/
ins_bug {[hkj/hsjfk/123]}
current_line
current_line abc/123/jhk/
size jfkdjgfdl/hkshfhd
size kjfhgkfjglf/hskahfjd
current_line
current_line hjkd
ins_bug {[hds/hdf/123]}
size djfkljlg/hkdsgj
ins_bug [dsf/dfdg/dfdfd]
size dklgfks/jdskljfldlk
current_line
current_line abc/123/jkjjkj
size jkjfd/kjdjf
我试着写这段代码
CODE:
#!/usr/bin/env perl
use warnings;
use strict;
open (fh, "sas.txt");
open (OUT, " > out.txt");
$x = 0;
my $mat = qr/abc\/123/;
while ($line = <fh>)
{
chomp ($line);
if ($line =~ m/current_line/)
{
print OUT "$line \n";
$x = 1;
}
elsif ($x == 1)
{
if ($line =~ m/$mat/)
{
print OUT " $line \n" unless $line =~ m/ins_bug/;
}
}
else
{
print OUT " $line \n ";
}
}
close (fh);
这是一个了不起的解释。我试过了,它为我工作。对我来说它的一个很好的学习 – SKG