Eliminar espacios excepto líneas que comienzan con un patrón específico

Eliminar espacios excepto líneas que comienzan con un patrón específico

Quiero eliminar todos los espacios de un archivo, excepto cada línea que comience con el mismo patrón (el patrón es "ORGANISMO").

Aporte:

Cat; Dog; Squirrel
ORGANISM Animalus terrus
Sequence: ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT

Producción:

Cat;Dog;Squirrel
ORGANISM Animalus terrus
Sequence:ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT

No más espacios en ninguna línea excepto la línea que comienza con los caracteres "ORGANISMO".

Respuesta1

sed '/^ORGANISM/!s/ //g' /path/to/input

Esto eliminará todos los espacios en todas las líneas que no lo hacen.noEmpezar con ORGANISM.

Respuesta2

sed -e '/^ORGANISM/n' -e 's/ //g'  < input > output

La primera expresión salta a la nlínea ext si ésta comienza con ORGANISM, y si eso no sucedió, ssustituye todos los espacios por nada ( globalmente)

Respuesta3

Aquí hay una versión de Perl que utiliza una búsqueda anticipada negativa (?!ORGANISM)para determinar si necesitamos realizar una sustitución. -pbanderas permite la impresión automática

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

información relacionada