
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 n
linha ext se esta começar com ORGANISM
, e se isso não acontecer, s
substitua todos os espaços por nada ( g
lobally)
Responder3
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