Como remover os espaços em branco da linha específica?

3

Digamos que eu tenha um arquivo estruturado assim:

X sequence 1 is this

ABCDE FGH HIJ

X sequence 2 is this

ABCDE FGH HIJ

Como eu removeria condicionalmente o espaço em branco? Eu sei que o trecho abaixo irá remover todos os espaços em branco. Como eu seria capaz de remover os espaços em branco apenas nas linhas que começam com X?

sed 's/ //g' 

Eu também vi

 '/^startswith

foi usado, mas parece que não pode ligá-los ao trabalho.

Obrigado.

    
por TW93 02.03.2017 / 12:24

1 resposta

3

Em awk, a sintaxe geral é o endereço seguido por um bloco de códigos, em que "endereço" é um número de linha ou um /regex/ ou um intervalo from,to separado por vírgulas.

Então, se você quiser combinar as linhas que começam com X e aplicar uma substituição a elas:

/^X/ { gsub(/ /, ""); } { print; }

(O segundo bloco é sem endereço, então imprime todas as linhas.)

A sintaxe

sed é semelhante, exceto que os comandos são mais curtos ( s/…/…/ para substituição) e blocos de comando único não precisam das chaves. Assim, a mesma tarefa pode ser executada no sed usando:

/^X/ { s/ //g; }

ou o menor

/^X/ s/ //g

(Sed também não precisa de um bloco "print" explícito já que a impressão já é o padrão, a menos que -n seja dado. Mas tem um comando de impressão p .)

    
por 02.03.2017 / 12:26

Tags