
Ich möchte alle Leerzeichen aus einer Datei entfernen, außer aus jeder Zeile, die mit demselben Muster beginnt (Muster ist „ORGANISM“).
Eingang:
Cat; Dog; Squirrel
ORGANISM Animalus terrus
Sequence: ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
Ausgabe:
Cat;Dog;Squirrel
ORGANISM Animalus terrus
Sequence:ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
Keine weiteren Leerzeichen in irgendeiner Zeile außer der Zeile, die mit den Zeichen „ORGANISM“ beginnt.
Antwort1
sed '/^ORGANISM/!s/ //g' /path/to/input
Dadurch werden alle Leerzeichen in allen Zeilen entfernt, dienichtbeginnen mit ORGANISM
.
Antwort2
sed -e '/^ORGANISM/n' -e 's/ //g' < input > output
Der erste Ausdruck springt zur n
nächsten Zeile, wenn diese mit beginnt ORGANISM
, und wenn das nicht passiert, s
werden alle Leerzeichen durch nichts ersetzt ( g
global)
Antwort3
Hier ist eine Perl-Version, die einen negativen Lookahead verwendet, (?!ORGANISM)
um herauszufinden, ob wir eine Substitution durchführen müssen. -p
Flags ermöglicht automatisches Drucken
$ perl -pe 's/[[:blank:]]//g if /^(?!ORGANISM).*/' input.txt
Cat;Dog;Squirrel
ORGANISM Animalus terrus
Sequence:ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT