Imprimir somente primeira ocorrência entre deliminadores [RESOLVIDO]

1. Imprimir somente primeira ocorrência entre deliminadores [RESOLVIDO]

Daniel P. L. Almeida
daniel.uramg

(usa Outra)

Enviado em 06/05/2017 - 11:51h

Olá pessoal,
tenho um código HTML com algumas TR´s, gostaria de saber como posso imprimir somente a primeira ocorrência.
EX.:
Tenho o código

<tbody>
<tr><td valign='top'>04/05/2017<br>08:27<br>
<label>CURITIBA/PR</label></td>
<td><strong>Objeto encaminhado </strong><br>
de CENTRO INTERNACIONAL PR-GEINT - CURITIBA/PR para RFB - Liberado sem Tributação - /BR </td>
</tr>
<tr><td valign='top'>12/04/2017<br>13:11<br>
<label>CURITIBA/PR</label></td>
<td><strong>Objeto recebido pelos Correios do Brasil</strong><br>
Registrado por UNIDADE INTERNACIONAL CURITIBA - CURITIBA/PR </td>
</tr>
<tr><td valign='top'>28/03/2017<br>17:48<br>
<label>/</label></td>
<td><strong>Objeto encaminhado </strong><br>
de PAISES BAIXOS - / para Unidade de Tratamento Internacional - BRASIL/BR </td>
</tr>
</tbody>


gostaria de filtrar somente

<tr><td valign='top'>04/05/2017<br>08:27<br>
<label>CURITIBA/PR</label></td>
<td><strong>Objeto encaminhado </strong><br>
de CENTRO INTERNACIONAL PR-GEINT - CURITIBA/PR para RFB - Liberado sem Tributação - /BR </td>
</tr>


tentei algo tipo sed -n '/<tr/,/<\/tr/p'
porém me retora todas ocorrências

grato.


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/05/2017 - 18:55h

daniel.uramg escreveu:

msoliver escreveu:
Boa tarde Daniel.
Segue suguestão . . . .
lini=$(grep -nm1 '</tr>' table.html|cut -d: -f1) #Pega o nº da linha do 1º <tr>
lfin=$(grep -nm1 '</tr>' table.html|cut -d: -f1) ##Pega o nº da linha do 1º </tr>
sed -n "${lini},${lfin}p" table.html


Att.:
Marcelo Oliver

Bom dia amigo,
cara infelizmente não deu certo, minha distro é bem enxuta (BrazilFW) e acredito que o grep foi compilado sem os parâmetros necessários:

router# lini=$(grep -nm1 '</tr>' table.html|cut -d: -f1) #Pega o nº da linha do 1º <tr>
grep: illegal option -- m
BusyBox v1.2.1 (2008.04.29-16:34+0000) multi-call binary

Usage: grep [-ihHnqvsEABC] PATTERN [FILEs...]

router# lfin=$(grep -nm1 '</tr>' table.html|cut -d: -f1) ##Pega o nº da linha do 1º </tr>
grep: illegal option -- m
BusyBox v1.2.1 (2008.04.29-16:34+0000) multi-call binary

Usage: grep [-ihHnqvsEABC] PATTERN [FILEs...]

router# sed -n "${lini},${lfin}p" table.html

sed: no address after comma

router#
[/code]

bom vc me deu uma luz, pegar o numero das linhas que preciso filtrar, vou tentando se conseguir posto aqui!

garo!


Daniel, para contornar a situação do "grep capado", vamos utilizar o "head" . . .

lini=$(grep -n '<tr>' table.html|head -n1|cut -d: -f1) #Pega o nº da linha do 1º <tr>
lfin=$(grep -n '</tr>' table.html|head -n1|cut -d: -f1) ##Pega o nº da linha do 1º </tr>
sed -n "${lini},${lfin}p" table.html


att.:
MarceloOliver

3. Re: Imprimir somente primeira ocorrência entre deliminadores [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 06/05/2017 - 12:06h

Neste link há alguns script: https://www.vivaolinux.com.br/artigo/Minha-caixa-de-ferramentas-no-GNU-Linux
Um deles é para conferir encomendas no site dos Correios.
Caso você esteja explorando o mesmo HTML pode ser que lhe sirva.
Se o script não funcionar (faz cinco anos), pode ser que necessite alguma manutenção.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



4. Re: Imprimir somente primeira ocorrência entre deliminadores [RESOLVIDO]

Daniel P. L. Almeida
daniel.uramg

(usa Outra)

Enviado em 06/05/2017 - 12:14h

listeiro_037 obrigado pela ajuda mas infelizmente não resolve
pois o velho sistema WebSRO dos Correios não funciona mais, meu script funcionava bem nele agora estou usando um alternativo, porém ele quebra as linhas que no site oficial era numa só, o que está me complicando.


5. Re: Imprimir somente primeira ocorrência entre deliminadores [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 06/05/2017 - 12:23h

Poderia publicar seu script aqui?
Usando tags [ code ] e [ /code ]?

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



6. Re: Imprimir somente primeira ocorrência entre deliminadores [RESOLVIDO]

Daniel P. L. Almeida
daniel.uramg

(usa Outra)

Enviado em 06/05/2017 - 12:28h

Cara meu script é uma ENORME P.O.G. kkk
mas ta ai:

#!/bin/sh
#Web Tracker - By Daniel.uramg - 27/01/2011
##CHANGELOG##
#08/08/12: Encomendas Entregues são filtradas pela ID antes de mover para tabela Entregues, pois estava ficando fora da ordem.
#14/08/12: Criada variável "init" para poder atulizar um unico pacote pelo codigo passando pela stdin $1
####
PROG=`basename $0`
SCRIPT=`echo $PROG | sed 's/\.sh$//'`
TMP_PID="/var/tmp/$SCRIPT.pid"
PASTA=`dirname $0`; PASTA=`cd $PASTA; pwd`
PATH="$PATH:$PASTA"
IFS="$(echo -e '\t')" #Define separador IFS como TAB
CONTA_PROCESSADOS="0"
CONTA_ATUALIZADOS="0"
CONTA_ENTREGUES="0"
echo "0" > /tmp/CONTA_PROCESSADOS
echo "0" > /tmp/CONTA_ATUALIZADOS
echo "0" > /tmp/CONTA_ENTREGUES

#Remove acentos
#sed 'y/áÁàÀãÃâÂéÉêÊëËíÍóÓõÕôÔúÚçÇ/aAaAaAaAeEeEeEiIoOoOoOuUcC/'
#Substitui quebra de linha por |
#sed ':a;$!N;s/\n/|/g;ta'
#Substitui %20 por <br>
#sed 's/%20/<br>/g`
#Substitui o /n por quebra de linha
#sed 's/\\n/\n/g'

FUNC_DEBUG(){
[ ! -e "/partition/tmp/webtracker_`date "+%y-%m-%d`" ] && touch "/partition/tmp/webtracker_`date "+%y-%m-%d`" ; chmod 666 "/partition/tmp/webtracker_`date "+%y-%m-%d`"
echo "`date "+%H:%M:%S"` - $1" >> /partition/tmp/webtracker_`date "+%y-%m-%d`
#echo $1
}

logger "$PASTA/$PROG executado"
FUNC_DEBUG "Script iniciado"

# Garante a execucao de apenas uma instancia do script
if [ -s "$TMP_PID" ]; then
PID=`cat $TMP_PID`
if [ "`ps | grep -E "(^$PID)|( ^$PID)" | grep script.sh | grep -v grep`" ]; then
FUNC_DEBUG "Script encerrado pois outra instancia em execução PID=$PID ("`ps | grep $PID`")"
logger "$PASTA/$PROG abortado pois Outra instancia em execução PID=$PID"
exit 3
fi
fi
echo $$ > $TMP_PID

#Se for passado o codigo de rastreamento como parametro $1 processa somente ele
[ "$1" ] && INIT="where codigo = '"$1"'"

#Se a requisição vier do Apache usa outro arquivo de conf do msmtp por causa das permissões do arquivo
[ "$2" = "apache" ] && MSMTPRC=".msmtprc2" || MSMTPRC=".msmtprc"
[ "$2" = "apache" ] && MSMTPRClj=".msmtploja2" || MSMTPRClj=".msmtploja"

#Le cada codigo da tabela (primeiro while)
mysql -u "usuario" "senha" -e "select codigo, email, cliente, tel, texto from tracking $INIT" | sed '1d' | while read COD EMAIL CLIENTE TEL DESC; do
echo $COD
CONTA_PROCESSADOS="$(($CONTA_PROCESSADOS+1))"
echo $CONTA_PROCESSADOS > /tmp/CONTA_PROCESSADOS
#FUNC_DEBUG "$COD processado. $CONTA_PROCESSADOS"

#Le ultimo valor da encomenda antes de alualizar
LERVALOR_ANTIGO=`mysql -u "usuario" "senha" -e "select valor from Rastreando where codigo = '$COD' order by id DESC LIMIT 1" | sed '1d;s/#!//g;s/\\\n/\n/g'`

#Correios
####DESATIVADO EM 09/04/15 POIS OS CORREIOS CORTARAM O WEBSRO
GET=`wget -O - "http://websro.correios.com.br/sro_bin/txect01$.QueryList?P_ITEMCODE=&P_LINGUA=001&P_TESTE=&P_TIPO=001&P_COD_UNI=$COD" | sed -n '/<table/,/<\/table/p' | sed '9,10!d;y/áÁàÀãÃâÂéÉêÊëËíÍóÓõÕôÔúÚçÇ/aAaAaAaAeEeEeEiIoOoOoOuUcC/' | tr -s ' '`
###NOVO M[ETODO POR DENTRO DE OUTRO SERVIDOR, VEREMOS NO QUE DA...
#GET=`curl http://www.rastreamentocorreios.com.br/package/track -d "package_code=$COD" | sed -n '/<table/,/<\/table/p' | sed 's/class="table table-condensed table-hover table-bordered"/border="1" cellpadding="1" hspace="10" bgcolor="#D8E6ED"/;s/Ação/A\&ccedil\;\&atilde\;o/' | sed 's/<th>/<th style="color:#CC0000\;font-family:Tahoma\;">/'`
#GET=`wget -O - "http://sro.micropost.com.br/consulta.php?objetos=$COD" | sed -n '/<table/,/<\/table/p' | sed '8,20!d;y/áÁàÀãÃâÂéÉêÊëËíÍóÓõÕôÔúÚçÇ/aAaAaAaAeEeEeEiIoOoOoOuUcC/' | tr -s ' '`
GET_URL="http://websro.correios.com.br/sro_bin/txect01$.Inexistente?P_LINGUA=001&P_TIPO=002&P_COD_LIS=$COD"

#Hong Kong Post
# if [ -z "$GET" -a "`echo "$COD" | grep "HK"`" -a -z "$LERVALOR_ANTIGO" ]; then
#GET=`wget -O - http://app3.hongkongpost.com/CGI/mt/genresult.jsp?tracknbr=$COD | sed '130,131!d;y/áÁàÀãÃâÂéÉêÊëËíÍóÓõÕôÔúÚçÇ/aAaAaAaAeEeEeEiIoOoOoOuUcC/'`
#[ ! -z "`echo "$GET" | grep "<!--"`" -o ! -z "`echo "$GET" | grep "Case Number"`" -o ] && GET=
#GET_URL="http://app3.hongkongpost.com/CGI/mt/genresult.jsp?tracknbr=$COD"
# fi

#Sing Post
# if [ -z "$GET" -a "`echo "$COD" | grep "SG"`" -a -z "`echo $LERVALOR_ANTIGO`" ]; then
#GET=`wget -O - http://www.singpost.com/ra/ra_article_detail_status_results.aspx?ranumber=$COD | sed '61,62!d' | sed 's/<\/td><td class=smalltext bgcolor="#D1EDFC">/ /g' | sed 's/<\/td><\/tr>/\n/g' | sed 's/<[^>]*>//g' | sed '/DateStatus/d'`
#GET_URL="http://www.singpost.com/ra/ra_article_detail_status_results.aspx?ranumber=$COD"
# fi

#Se houver atualização...
if [ "$GET" -a "$LERVALOR_ANTIGO" != "$GET" ]; then
CONTA_ATUALIZADOS="$(($CONTA_ATUALIZADOS+1))"
echo $CONTA_ATUALIZADOS > /tmp/CONTA_ATUALIZADOS
FUNC_DEBUG "$COD atualizado. $CONTA_ATUALIZADOS"

#Função para criar variavel de aviso de encomenta entregue
if [ "`echo "$GET" | grep -E '([Ee]ntregue)|([Ee]ntrega [Ee]fetuada)'`" ]; then
ENTREGUE="
Esperamos que tenha ficado satisfeito em todo o processo de compra e estamos a disposição para qualquer duvida ou eventualidade! Assim que testar seu produto não se esqueça de nos qualificar no MercadoLivre, ate a proxima!
"

ENTREGUE_bbsriborns="<p><b>Identificamos que sua encomenda foi entregue!</b> <br>Esperamos que tenha ficado satisfeito em todo o processo de compra e
estamos à disposição para qualquer dúvida ou eventualidade!<br><br>Caso tenha interesse, fique à vontade para realizar um depoimento com a foto da Boneca Reborn recebida em nossa página do Facebook: <a href="https://www.facebook.com/bonecasbebesreborn">https://www.facebook.com/bonecasbebesreborn</a></p>"

ENTREGUE_CARTUCHOSETC="<p>PARABÉNS! SEU PEDIDO NA CARTUCHO ETC CHEGOU!</p>"

MSG_HORADACHEPA="<P>Prezado(a) cliente. O site dos correios informa que seu pacote foi entregue. Pedimos que após conferir nos qualifique positivamente no site do Mercado Livre. Caso haja qualquer divergência no seu produto, favor nos comunique para que possamos resolver.</P>
<P>Após a qualificação, convido-o(a) a cadastrar-se em nossa loja virtual (www.horadaxepa.com) para ganhar descontos.</P>
<P>Muito obrigado e até a próxima.</P>"
else
ENTREGUE=""
ENTREGUE_CARTUCHOSETC=""
ENTREGUE_bbsriborns=""
MSG_HORADACHEPA="<p>Prezado cliente!</p>
<p>Obrigado por comprar nosso produto no site Mercado Livre. Segue código de rastreamento para que você possa acompanhar sua entrega.</p>
<p>O prazo de entrega está indicado nos detalhes de sua compra no Mercado Livre. Havendo atualização da sua entrega você será avisado(a).</p>"
fi

#Se a encomenda foi perdida nao envia email para o cliente
[ "`echo $GET | grep -E '([Ee]ntre em contato conosco)'`" ] && CLIENTE=""

#Chama funções para enviar Email
#Se o email for da loja envia pelo sendmail personalizado
if [ "$EMAIL" = "vendas@digipaperinformatica.com" ]; then #DIGIPAPER
. sendmail_digipaper.sh
#. dlink_2740.sh
elif [ "$EMAIL" = "plaeletroinfo@gmail.com" ]; then #PLAELETROINFO
. sendmail_plaeletroinfo.sh
#. dlink_2740.sh
elif [ "$EMAIL" = "infotronicax@gmail.com" ]; then #INFOTRONICA-X
. sendmail_infotronica.sh
#. dlink_2740.sh
elif [ "$EMAIL" = "infor.tagua@gmail.com" ]; then #infor.tagua
. sendmail_infortagua.sh
elif [ "$EMAIL" = "webmaster@cartuchoetc.com.br" ]; then #cartuchosetc
. sendmail_cartuchosetc.sh
elif [ "$EMAIL" = "contato@horadaxepa.com" ]; then #horadaxepa
. sendmail_horadaxepa.sh
elif [ "$EMAIL" = "reborns@outlook.com.br" ]; then #bbsreborns
. sendmail_reborns.sh
else #WEBTRACKER PADRAO
. sendmail.sh
fi

#se não houve erro no envio do email atualiza o BD
if [ "$NOERR" = "0" ]; then
#mysql -u "usuario" "senha" -e "delete from Rastreando where CODIGO = '$COD'"
mysql -u "usuario" "senha" -e "insert into Rastreando values (0,'$COD',NOW(),'$GET')"

FUNC_DEBUG "$COD Email Enviado"
else
FUNC_DEBUG "Erro no envio de Emails! $NOERR"
echo "To: contato@digipaperinformatica.com
Subject: Erro no envio de Emails!
Erro no envio de Emails!
Erro: $NOERR" | /usr/sbin/./msmtp -t -C $PASTA/$MSMTPRC --account=tracker2
#FUNC_DEBUG `/partition/scriptsteste/SendSMS/./sendsms.sh 6198168585 "WebTracker: Erro no envio de Emails!"`
fi

fi ##fecha if do "Se houver atualização"

#Remover o pacote se foi entregue ou devolvido
FUNC_REMOVER() {
#Le valor atualizado
LERVALOR_ATUALIZADO=`mysql -u "usuario" "senha" -e "select valor from Rastreando where codigo = '$COD' order by id DESC LIMIT 1" | sed '1d;s/#!//g;s/\\\n/\n/g'`

#inserir esta string para remover encomendas perdidas: "([Ee]ntre em contato conosco)"
if [ "`echo $LERVALOR_ATUALIZADO | grep -E '([Ee]ntregue)|([Ee]ntrega [Ee]fetuada)|([Ee]m trânsito para [Hh][Oo][Nn][Gg] [Kk][Oo][Nn][Gg])'`" ]; then
#Coleta os dados deste $COD da tabela tracking
EMAIL=`mysql -u "usuario" "senha" -e "select email from tracking where codigo = '$COD'" | sed '1d'`
CLIENTE=`mysql -u "usuario" "senha" -e "select cliente from tracking where codigo = '$COD'" | sed '1d'`
TEXTO=`mysql -u "usuario" "senha" -e "select texto from tracking where codigo = '$COD'" | sed '1d'`

#Coleta os dados deste $COD da tabela Rastreando e coloca na Entregues (segundo while)
mysql -u "usuario" "senha" -e "select id,datetime,valor from Rastreando where codigo = '$COD' order by id" | sed '1d' | while read ID DATETIME VALOR; do
#Cria valores na tabela Entregues
mysql -u "usuario" "senha" -e "insert into Entregues values (0,'$COD','$DATETIME','$EMAIL','$CLIENTE','$TEXTO','$VALOR')"
done #do segundo while

#Deleta $COD da tabela tracking e Entregues
mysql -u "usuario" "senha" -e "delete from tracking where codigo = '$COD'" && mysql -u "usuario" "senha" -e "delete from Rastreando where codigo = '$COD'"

#contador de Entregues
DATA=`date +%d-%m-%y`
[ -z `grep $DATA $PASTA/ENTREGUES` ] && echo "$DATA=0" >> $PASTA/ENTREGUES
ATUAL=`grep $DATA $PASTA/ENTREGUES | cut -f 2 -d=`
sed -i "/$DATA/s/=$ATUAL/=`echo $(($ATUAL+1))`/g" $PASTA/ENTREGUES

#DEBUG/LOG
CONTA_ENTREGUES="$(($CONTA_ENTREGUES+1))"
echo $CONTA_ENTREGUES > /tmp/CONTA_ENTREGUES
FUNC_DEBUG "$COD entregue. $CONTA_ENTREGUES"
fi
}

FUNC_REMOVER

done #do primeiro while

#DEBUG/LOG
CONTA_PROCESSADOS=`cat /tmp/CONTA_PROCESSADOS` 2> /dev/null
CONTA_ATUALIZADOS=`cat /tmp/CONTA_ATUALIZADOS` 2> /dev/null
CONTA_ENTREGUES=`cat /tmp/CONTA_ENTREGUES` 2> /dev/null

logger "$PASTA/$PROG finalizado com: Processados:$CONTA_PROCESSADOS Atualizados:$CONTA_ATUALIZADOS Entregues:$CONTA_ENTREGUES"
FUNC_DEBUG "Script finalizado com: Processados:$CONTA_PROCESSADOS Atualizados:$CONTA_ATUALIZADOS Entregues:$CONTA_ENTREGUES"
FUNC_DEBUG "_______________________________________________________________"
rm /tmp/CONTA_PROCESSADOS
rm /tmp/CONTA_ATUALIZADOS
rm /tmp/CONTA_ENTREGUES



7. Re: Imprimir somente primeira ocorrência entre deliminadores [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/05/2017 - 14:00h

daniel.uramg escreveu:

Olá pessoal,
tenho um código HTML com algumas TR´s, gostaria de saber como posso imprimir somente a primeira ocorrência.
EX.:
Tenho o código

<tbody>
<tr><td valign='top'>04/05/2017<br>08:27<br>
<label>CURITIBA/PR</label></td>
<td><strong>Objeto encaminhado </strong><br>
de CENTRO INTERNACIONAL PR-GEINT - CURITIBA/PR para RFB - Liberado sem Tributação - /BR </td>
</tr>
<tr><td valign='top'>12/04/2017<br>13:11<br>
<label>CURITIBA/PR</label></td>
<td><strong>Objeto recebido pelos Correios do Brasil</strong><br>
Registrado por UNIDADE INTERNACIONAL CURITIBA - CURITIBA/PR </td>
</tr>
<tr><td valign='top'>28/03/2017<br>17:48<br>
<label>/</label></td>
<td><strong>Objeto encaminhado </strong><br>
de PAISES BAIXOS - / para Unidade de Tratamento Internacional - BRASIL/BR </td>
</tr>
</tbody>


gostaria de filtrar somente

<tr><td valign='top'>04/05/2017<br>08:27<br>
<label>CURITIBA/PR</label></td>
<td><strong>Objeto encaminhado </strong><br>
de CENTRO INTERNACIONAL PR-GEINT - CURITIBA/PR para RFB - Liberado sem Tributação - /BR </td>
</tr>


tentei algo tipo sed -n '/<tr/,/<\/tr/p'
porém me retora todas ocorrências

grato.


Boa tarde Daniel.
Segue suguestão . . . .
lini=$(grep -nm1 '</tr>' table.html|cut -d: -f1) #Pega o nº da linha do 1º <tr>
lfin=$(grep -nm1 '<tr>' table.html|cut -d: -f1) ##Pega o nº da linha do 1º </tr>
sed -n "${lini},${lfin}p" table.html


Att.:
Marcelo Oliver



8. Re: Imprimir somente primeira ocorrência entre deliminadores [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 06/05/2017 - 14:04h

daniel.uramg escreveu:
Cara meu script é uma ENORME P.O.G. kkk


msoliver escreveu:
Boa tarde Daniel.
Segue suguestão . . . .
lini=$(grep -nm1 '</tr>' table.html|cut -d: -f1) #Pega o nº da linha do 1º <tr>
lfin=$(grep -nm1 '</tr>' table.html|cut -d: -f1) ##Pega o nº da linha do 1º </tr>
sed -n "${lini},${lfin}p" table.html



eu nem vou mais dar pitaco nessas paradas de script aqui no fórum ... a gente racha a cuca para fazer um script mirabolante aí vem o MSO e humilha 'nóis' . kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


9. Re: Imprimir somente primeira ocorrência entre deliminadores [RESOLVIDO]

Daniel P. L. Almeida
daniel.uramg

(usa Outra)

Enviado em 08/05/2017 - 09:45h

msoliver escreveu:
Boa tarde Daniel.
Segue suguestão . . . .
lini=$(grep -nm1 '</tr>' table.html|cut -d: -f1) #Pega o nº da linha do 1º <tr>
lfin=$(grep -nm1 '</tr>' table.html|cut -d: -f1) ##Pega o nº da linha do 1º </tr>
sed -n "${lini},${lfin}p" table.html


Att.:
Marcelo Oliver

Bom dia amigo,
cara infelizmente não deu certo, minha distro é bem enxuta (BrazilFW) e acredito que o grep foi compilado sem os parâmetros necessários:

router# lini=$(grep -nm1 '</tr>' table.html|cut -d: -f1) #Pega o nº da linha do 1º <tr>
grep: illegal option -- m
BusyBox v1.2.1 (2008.04.29-16:34+0000) multi-call binary

Usage: grep [-ihHnqvsEABC] PATTERN [FILEs...]

router# lfin=$(grep -nm1 '</tr>' table.html|cut -d: -f1) ##Pega o nº da linha do 1º </tr>
grep: illegal option -- m
BusyBox v1.2.1 (2008.04.29-16:34+0000) multi-call binary

Usage: grep [-ihHnqvsEABC] PATTERN [FILEs...]

router# sed -n "${lini},${lfin}p" table.html

sed: no address after comma

router#
[/code]

bom vc me deu uma luz, pegar o numero das linhas que preciso filtrar, vou tentando se conseguir posto aqui!

garo!



10. Re: Imprimir somente primeira ocorrência entre deliminadores [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/05/2017 - 09:52h

BusyBox é o mínimo do mínimo de ferramentas.
Se não me engano, nem less tem.
Geralmente BB aparece quando o sistema não carrega e necessita de uma manutenção via terminal.

É o prompt do rescue do Debian.

Também aparece no Debian quando se está instalando e pressiona-se, por exemplo, <Alt+F2> e na tela há a mensagem pedindo pressionamento de tecla para adentrar shell, que é BusyBox.

Se você tiver outro sistema, ou se isso for tela de manutenção, você deverá usar os comandos em um ambiente mais poderoso, ou trocar por comandos compatíveis com esse mesmo ambiente.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



11. Re: Imprimir somente primeira ocorrência entre deliminadores [RESOLVIDO]

Daniel P. L. Almeida
daniel.uramg

(usa Outra)

Enviado em 09/05/2017 - 19:01h

msoliver escreveu:
Daniel, para contornar a situação do "grep capado", vamos utilizar o "head" . . .

lini=$(grep -n '<tr>' table.html|head -n1|cut -d: -f1) #Pega o nº da linha do 1º <tr>
lfin=$(grep -n '</tr>' table.html|head -n1|cut -d: -f1) ##Pega o nº da linha do 1º </tr>
sed -n "${lini},${lfin}p" table.html


att.:
MarceloOliver


PERFECT!
Muito obrigado, problema resolvido!!


12. Re: Imprimir somente primeira ocorrência entre deliminadores [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/05/2017 - 19:50h

daniel.uramg escreveu:

msoliver escreveu:
Daniel, para contornar a situação do "grep capado", vamos utilizar o "head" . . .

lini=$(grep -n '<tr>' table.html|head -n1|cut -d: -f1) #Pega o nº da linha do 1º <tr>
lfin=$(grep -n '</tr>' table.html|head -n1|cut -d: -f1) ##Pega o nº da linha do 1º </tr>
sed -n "${lini},${lfin}p" table.html


att.:
MarceloOliver


PERFECT!
Muito obrigado, problema resolvido!!


Por nada Daniel....
Precisando . . . .
Agradeço pela escolha da melhor resposta....

abç.:
marcelo oliver







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts