Remover linhas comentadas, exceto um comentário usando sed

1

Não muito familiarizado com usos complexos de sed , mas eu tenho esse requisito agora. Eu tenho um arquivo 1.txt com o conteúdo no seguinte padrão:

sree@amby01:/home/sree : cat 1.txt
SSL
 this first line
#comment line
 second line
# third comment
# line nline
#ApiText
lkjfl
# my line
your line
sree@amby01:/home/sree :

Agora, desejo remover as linhas comentadas entre o bloco SSL....#ApiText , mas a linha #ApiText não deve ser removida.

A saída deve ficar assim:

SSL
this first line
 second line
#ApiText

É um shell bash. Eu sei como remover linhas comentadas sozinho, mas não como remover linhas comentadas, exceto quando o comentário é seguido por um determinado texto. Eu posso usar apenas sed .

    
por Sree 29.06.2016 / 12:04

1 resposta

6

Existem muitas maneiras, mas uma de várias pode ser:

sed '/SSL/,/#ApiText/{//b;/^#/d}' 1.txt
  • /SSL/,/#ApiText/ - intervalo de endereços onde os comandos serão executados
  • // - para linha (s) com regexp anterior ( SSL ou #ApiText - alguma encontrada)
  • b - ir para o final das instruções (significa para não fazer nada )
  • /^#/d - exclua (não imprima) linhas iniciadas por #
por 29.06.2016 / 12:17

Tags