Leser: 18
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#!/usr/local/bin/perl -w use strict; use Tie::File; use Fcntl 'O_RDWR'; #my $file = q(/var/log/cisco.log); my $file = q(cisco.log); tie my @array, 'Tie::File', $file, mode=>O_RDWR; for my $i (reverse 0.. $#array){ splice(@array,$i,1) if($array[$i]=~/Fan 2 not rotating/); } untie @array;
1 2 3 4 5 6 7 8 9 10 11
#!/usr/local/bin/perl -w use strict; open(IN,'cisco.log') or die "$!\n"; open(OUT,'>temp.log') or die "$!\n"; while(my $line=<IN>){ if($line!~/Fan 2 not rotating/){ print OUT $line; } } system("mv temp.log cisco.log");
grep -v "Fan 2 not rotating" old.log > new.log
perl -i.orig -ne 'print unless /^Fan 2 not rotating/' logfile.log
2009-07-15T14:12:52 neposMit sed gehts auch, der hat sogar einen Schalter für inplace -i, damit musst du dann keine temporäre Datei erzeugen.
2009-07-15T16:25:56 betterworld2009-07-15T14:12:52 neposMit sed gehts auch, der hat sogar einen Schalter für inplace -i, damit musst du dann keine temporäre Datei erzeugen.
Was natürlich intern auch über eine temporäre Datei implementiert ist.
In einem Perl-Forum grep und sed zu empfehlen kann auch gefährlich werden ;) Auch mit Perl kann man es in einem Shell-Einzeiler machen. Siehe Beitrag von moritz.