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

3

Eu quero remover todos os espaços de um arquivo, exceto de cada linha que começa com o mesmo padrão (o padrão é "ORGANISMO").

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 qualquer linha, exceto a linha que começa com os caracteres "ORGANISMO".

    
por Annick Raymond 01.06.2017 / 19:24

3 respostas

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

Isso removerá todos os espaços em todas as linhas que não iniciam com ORGANISM .

    
por 01.06.2017 / 19:30
1
sed -e '/^ORGANISM/n' -e 's/ //g'  < input > output

A primeira expressão vai para a linha n ext se esta começar com ORGANISM , e se isso não aconteceu, s ubstitute todos os espaços com nada ( g lobally)

    
por 01.06.2017 / 19:30
1

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

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