Use grep -o
:
grep "s_icsmstatus" $CONTEXT_FILE | grep -o 'disabled'
-o
fornece como saída o
nly a correspondência exata para o padrão fornecido, em vez da linha inteira na qual a correspondência é feita.
Eu quero grep e imprimir string desativada abaixo da saída
$ grep "s_icsmstatus" $CONTEXT_FILE
<oa_service_status oa_var="s_icsmstatus">disabled</oa_service_status>
Eu posso usar algo como
$ grep "s_icsmstatus" $CONTEXT_FILE | awk -F ">" '{print $(NF-1)}' | awk -F "</" '{print $(NF-1)}'
disabled
Mas há alguma maneira alternativa ou simples de fazer isso?
Use grep -o
:
grep "s_icsmstatus" $CONTEXT_FILE | grep -o 'disabled'
-o
fornece como saída o
nly a correspondência exata para o padrão fornecido, em vez da linha inteira na qual a correspondência é feita.
grep
não é a melhor ferramenta para analisar tags html, mas com uma pequena ajuda da sintaxe P
erl pode-se fazer o seguinte:
$ grep -Po 's_icsmstatus">\K[^<]*' $CONTEXT_FILE
disabled
a parte essencial é \K
, que corta tudo o que foi correspondido até agora, e nós imprimimos apenas descanso, ou seja, tudo até o próximo <
.
Você pode usar o seguinte, que é um pouco mais universal, pois pode capturar qualquer palavra entre as tags XML ... não apenas a palavra "disabled":
grep "s_icsmstatus" test.txt | awk -F ">" '{print $ 2}' | awk -F "<" '{print $ 1}'
Referência: link
Tags grep text-processing