Imprimir linhas entre dois padrões com SED [duplicado]

1

Eu tenho um arquivo com o conteúdo mostrado abaixo:

***************Encrypted String***************
 ezF7LcHO0Zlb+8kkBeIwtA== 
**********************************************

Eu preciso obter apenas a senha criptografada acima. Eu usei o Google para procurar uma resposta e recebi este exemplo (abaixo), mas não funcionou:

sed -n '/***************Encrypted String***************/,/************************************‌​**********/p' $file

Eu tentei, mas não funcionou

    
por Sureshchandra Jarugula 12.09.2016 / 14:40

1 resposta

1

O problema aqui é provavelmente que * é um operador de Expressão Regular, então você tem que escapar dele \* para que ele seja tratado como um literal. Seus exemplos e sugestões referenciando os literais BEGIN e END teriam todos falhado sem essa adaptação.

***************Encrypted String***************
 ezF7LcHO0Zlb+8kkBeIwtA== 
**********************************************

Para extrair a segunda linha, você pode usar um destes:

sed -n '0,/\*Encrypted String\*/d;p;q' "$file"
sed -n 2p "$file"

A primeira corresponde a *Encrypted String* e imprime a próxima linha. Observe que os caracteres * são gravados como \* para garantir que eles sejam tratados como asteriscos literais. O segundo apenas imprime a linha dois do arquivo.

    
por 12.09.2016 / 17:28