Slet linjer i en tekstfil, der indeholder en bestemt streng
Hvordan kan jeg bruge sed til at slette alle linjer i en tekstfil, der indeholder en bestemt streng?
1652
3
Hvordan kan jeg bruge sed til at slette alle linjer i en tekstfil, der indeholder en bestemt streng?
Sådan fjerner du linjen og udskriver output til standard out:
For at ændre filen direkte - virker ikke med BSD sed:
Det samme, men for BSD sed (Mac OS X og FreeBSD) - virker ikke med GNU sed:
For at ændre filen direkte (og oprette en sikkerhedskopi) - virker med BSD og GNU sed:
Der er mange andre måder at slette linjer med en specifik streng på end
sed
:AWK
Ruby (1.9+)
Perl
Shell (bash 3.2 og senere)
GNU grep
Og selvfølgelig
sed
(det er hurtigere at udskrive det omvendte end faktisk sletning):Du kan bruge sed til at erstatte linjer på stedet i en fil. Det ser dog ud til at være meget langsommere end at bruge grep til den omvendte del i en anden fil og derefter flytte den anden fil over den oprindelige.
f.eks.
eller
Den første kommando tager alligevel 3 gange længere tid på min maskine.