Buscando o valor da string de uma tag específica em um arquivo

0

Eu tenho um arquivo grande com mensagens separadas por uma tag <> .

Eu preciso buscar a tag inteira (com valor). Por favor, veja o exemplo abaixo:

<tvd:HostProductListStatus>000</tvd:HostProductListStatus><tvd:BeefProductListStatus>000</tvd:BeefProductListStatus><tvd:CustomerBranding>CC</tvd:CustomerBranding><tvd:InquiryAllowed>true</tvd:InquiryAllowed>

Eu preciso apenas buscar e exibir somente a seguinte tag: value do arquivo, independentemente de aparecer mais de uma vez:

<tvd:BeefProductListStatus>000</tvd:BeefProductListStatus>

Qual seria o comando para fazer isso?

    
por Meeaz 02.02.2017 / 18:19

2 respostas

0

Supondo que você queira a entrada e a saída postadas, isso pode funcionar, usando o GNU grep, e com seu arquivo chamado input :

<input grep '<tvd:BeefProductListStatus>[^<]*</tvd:BeefProductListStatus>' -o -m1 \
| head -n1

grep -o pede para imprimir apenas a parte que corresponde, [^<]* impede correspondendo mais de uma instância de <tvd:BeefProductListStatus> on a mesma linha e -m1 para depois das primeiras linhas correspondentes. Desde a ter duas instâncias dos dados marcados na mesma linha causaria grep para produzir cada um deles, head -n1 é necessário para podar isso em apenas o primeiro jogo.

    
por 02.02.2017 / 23:55
0
  1. altere a tag para \ n para trabalhar no modo de várias linhas
  2. extrai valores no modo de várias linhas e mantém valores para reter espaço
  3. dada a última linha recupera os valores do espaço de espera para o espaço padrão
  4. substitua todos os valores por tags e resultados de impressão
sed -rn '
    s/<tvd:BeefProductListStatus>/\n/g;
    s/([^<]*).*//Mg; H;               
    ${ g; s/\n+/ /g;
       s#\b(\w+)\b#<tvd:BeefProductListStatus></tvd:BeefProductListStatus>\n#gp
     }
' file
<tvd:BeefProductListStatus>000</tvd:BeefProductListStatus>
<tvd:BeefProductListStatus>111</tvd:BeefProductListStatus>
<tvd:BeefProductListStatus>000</tvd:BeefProductListStatus>
    
por 03.02.2017 / 10:41

Tags