Aqui está o arquivo strings.xml que inclui 3 frases:
1.string name="schedulelist_nofiles">Não existe agenda de registro! Por favor,
aqui falta linha tecla “Adicionar” (Adicionar) para adicionar uma. corda
2. Você deve pular esta linha!
3.string name="Programme_name">GUIA DE PROGRAMA string
Eu uso o comando cat 'cat strings.xml | grep "string name=" mas só fica abaixo das linhas:
string name="schedulelist_nofiles">Não existe agenda de registro! Por favor,
string name="Nome_do_programa">GUIA DE PROGRAMA string
Eu quero obter a linha completa assim, assim como a frase 3, comece com 'string name' e termine com "string". O que posso fazer para isso?
Com
pcregrep
:-M
: modo de várias linhas em que pcregrep extrai mais linhas da entrada conforme necessário para satisfazer o regex-o
: imprima a parte que corresponde ao regexp como no GNUgrep
(você pode omiti-lo ou substituí-lo-x
se o regex corresponder às linhas completas.(?s)
: ative os
sinalizador que faz.
com que também corresponda na nova linha.*?
: versão não gananciosa de.*
: qualquer número de caracteres, o mínimo possível.\b
: limite de palavras.Se você não tiver
pcregrep
, poderá fazer o mesmoperl
com algo como:Embora isso signifique carregar o arquivo inteiro na memória.
Com
sed
, supondo que elesstring name= ... string
ocupem linhas completas e que todos osstring name=
s sejam terminados por astring
:Abaixo sed oneliner pode ser usado para conseguir o mesmo. testei funcionou bem
Primeiro método1
No método 1, ele procurará a linha que começa com "nome da string" e termina com "string"
Método 2
No método 2, primeiro ele procura a linha que começa com "nome da string" e depois procura a linha que termina com a string
Resultado