problemas com grep. eu acho?

1. problemas com grep. eu acho?

Ricardo Neves
ricardo.ron

(usa Debian)

Enviado em 28/04/2020 - 18:01h

boa noite

Olhem essa depuração , o grep nao consegue encontar o arquivo dentro do texto .
C eu colocar o mac direto no scritp funciona parece que quanto puxa da variavel ele nao consegue .Sera que ele esta buscando com o \r e o $. $'00:0C:42:D4:1D:B9\r'
e nao consegue,. alguem sabe como resolver?

++ cat /script_shell/conect_list/mac_ip.txt
++ sed -n 1p
++ grep $'00:0C:42:D4:1D:B9\r'
++ cut -f2
+ gostou=
+ echo gostou=
gostou=

Rodando direto no shell vai de boa mais tem que tirar $ e /r
tem algum jeito de filtrar esse /r e $ da variavel

root@asterisk:~# cat /script_shell/conect_list/mac_ip.txt | grep $'E4:8D:8C:F3:42:D7\r' | sed -n 1p | cut -f2
root@asterisk:~#
root@asterisk:~# cat /script_shell/conect_list/mac_ip.txt | grep 'E4:8D:8C:F3:42:D7' | sed -n 1p | cut -f2
10.100.111.89
root@asterisk:~#



Ohh ja ia me esquecendo do codigo

mac_setor=`cat $arq_mac_setor | sed -n "$n_linhas"p`
mac_central=`grep -c "$mac_setor" "$arq_mac_ips_central"`
echo " mac setor$mac_setor"
if [ $mac_central = 0 ];then
echo "mac na central"
gostou=$(cat $arq_mac_ips_central | grep "$mac_setor" | sed -n 1p | cut -f2)
echo "gostou=$gostou"
else
echo "mac nao esta na central"
fi

o problema esta no mac_setor



  


2. Re: problemas com grep. eu acho?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 29/04/2020 - 21:23h

ricardo.ron escreveu:

boa noite

Olhem essa depuração , o grep nao consegue encontar o arquivo dentro do texto .
C eu colocar o mac direto no scritp funciona parece que quanto puxa da variavel ele nao consegue .Sera que ele esta buscando com o \r e o $. $'00:0C:42:D4:1D:B9\r'
e nao consegue,. alguem sabe como resolver?

++ cat /script_shell/conect_list/mac_ip.txt
++ sed -n 1p
++ grep $'00:0C:42:D4:1D:B9\r'
++ cut -f2
+ gostou=
+ echo gostou=
gostou=

Rodando direto no shell vai de boa mais tem que tirar $ e /r
tem algum jeito de filtrar esse /r e $ da variavel

root@asterisk:~# cat /script_shell/conect_list/mac_ip.txt | grep $'E4:8D:8C:F3:42:D7\r' | sed -n 1p | cut -f2
root@asterisk:~#
root@asterisk:~# cat /script_shell/conect_list/mac_ip.txt | grep 'E4:8D:8C:F3:42:D7' | sed -n 1p | cut -f2
10.100.111.89
root@asterisk:~#



Ohh ja ia me esquecendo do codigo

mac_setor=`cat $arq_mac_setor | sed -n "$n_linhas"p`
mac_central=`grep -c "$mac_setor" "$arq_mac_ips_central"`
echo " mac setor$mac_setor"
if [ $mac_central = 0 ];then
echo "mac na central"
gostou=$(cat $arq_mac_ips_central | grep "$mac_setor" | sed -n 1p | cut -f2)
echo "gostou=$gostou"
else
echo "mac nao esta na central"
fi

o problema esta no mac_setor

Boa noite Ricardo,
Esse \r é o "carriage return", retorno do carro, na geração do arquivo usou o \r sem o -e do echo....., Ficou confuso rsrsrsrsr
Exemplo:
echo "VIVAOLINUX\r"
Para tirar o \r da var, faça:
mac="20:89:84:00:6e:11\r"
echo ${mac/\\r}
No grep, é só usar:
grep -c "${mac/\\r}" arquivo.txt

Dica:

mac_setor=`sed -n "$n_linhas"p $arq_mac_setor`
echo " mac setor: ${mac_setor}"
if grep -m1 "${mac_setor/\\r}" "$arq_mac_ips_central"|cut -f2 > mac_setor.txt ;then
echo -e "Encontrou o Mac na central\nGostou=$(cat mac_setor.txt)"
else
echo "Não encontrou o mac: ${mac_setor/\\r}, na central"
fi

Se $mac_central = 0, não encontrou nada.....
grep -c conta, o numero de linhas onde tem o padrão procurado.

Observe que utilizei o Condicional, no "GREP".
Para evitar o "sed -n "1p", usei o -m1 no grep, pegando somente uma ocorrência.....
Não é necessário: cat arquivo|grep, evite o PIPE, use:
grep "buscarpor" arquivo

______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts