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

2

Digamos que eu tenha um arquivo estruturado para:

X sequência 1 é esta

ABCDE FGH HIJ

X sequência 2 é esta

ABCDE FGH HIJ

Como eu removeria condicionalmente o espaço em branco? Sei que o snippet abaixo removerá todo o espaço em branco. Como eu seria capaz de remover espaços em branco apenas nas linhas que começam com X?

sed 's/ //g' 

Eu também tinha visto

 '/^startswith

foi usado, mas parece que não os conecta ao trabalho.

Obrigado.

TW93
fonte

Respostas:

3

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

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

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

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

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

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

ou quanto menor

/^X/ s/ //g

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

gravidade
fonte
Excelente. Eu estava fazendo o mesmo, mas complicando demais e adicionando lixo depois. Obrigado pela ajuda.
TW93