Remova espaços, exceto linhas que começam com um padrão específico

Remova espaços, exceto linhas que começam com um padrão específico

Quero remover todos os espaços de um arquivo, exceto todas as linhas que começam com o mesmo padrão (o padrão é "ORGANISM").

Entrada:

Cat; Dog; Squirrel
ORGANISM Animalus terrus
Sequence: ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT

Saída:

Cat;Dog;Squirrel
ORGANISM Animalus terrus
Sequence:ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT

Não há mais espaços em nenhuma linha, exceto na linha que começa com os caracteres "ORGANISMO".

Responder1

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

Isso removerá todos os espaços em todas as linhas que fazemnãocomeçar com ORGANISM.

Responder2

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

A primeira expressão salta para a nlinha ext se esta começar com ORGANISM, e se isso não acontecer, ssubstitua todos os espaços por nada ( globally)

Responder3

Aqui está uma versão Perl usando lookahead negativo (?!ORGANISM)para descobrir se precisamos realizar a substituição. -pflags permite impressão automática

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

informação relacionada