Entfernen Sie Leerzeichen außer in Zeilen, die mit einem bestimmten Muster beginnen

Entfernen Sie Leerzeichen außer in Zeilen, die mit einem bestimmten Muster beginnen

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 nnächsten Zeile, wenn diese mit beginnt ORGANISM, und wenn das nicht passiert, swerden alle Leerzeichen durch nichts ersetzt ( gglobal)

Antwort3

Hier ist eine Perl-Version, die einen negativen Lookahead verwendet, (?!ORGANISM)um herauszufinden, ob wir eine Substitution durchführen müssen. -pFlags ermöglicht automatisches Drucken

$ perl -pe 's/[[:blank:]]//g if /^(?!ORGANISM).*/' input.txt                                                             
Cat;Dog;Squirrel
ORGANISM Animalus terrus
Sequence:ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT

verwandte Informationen