como remover linhas em branco de um intervalo de arquivos no shell

2

Eu tenho um arquivo como este:

something

import (
    "foo1"
    "foo2"
    "foo3"

    "bar"

    "baz"
 )

something

something

Eu gostaria de um comando shell que como resultado irá alterar o arquivo para:

something

import (
    "foo1"
    "foo2"
    "foo3"
    "bar"
    "baz"
 )

something

something

Ou com outras palavras, para remover as linhas vazias no intervalo de import ( para o fechamento ) e para deixar as linhas vazias antes e depois.

    
por gsf 09.01.2017 / 03:17

1 resposta

3

sed é apropriado para isso:

sed '/^import/,/^[[:space:]]*)/ { /^[[:space:]]*$/ d; }'

Este comando instrui sed a excluir ( d ) todas as linhas vazias ( /^[[:space:]]*$/ ) localizadas dentro dos blocos de linhas que começam com "import" e terminam com um parêntese de fechamento ( /^import/,/^[[:space:]]*)/ )

    
por 09.01.2017 / 03:27

Tags