Regexp - Shell Script [RESOLVIDO]

1. Regexp - Shell Script [RESOLVIDO]

Marcelo Matos
zwe

(usa Ubuntu)

Enviado em 12/08/2015 - 13:04h

Caros;

Alguém sabe o motivo da Regexp ('\s$x\s') abaixo não funcionar?

===============

#!/bin/bash

path=$(cat /var/www/spammer/spam3_list.txt)

for x in $path
do grep -P --color '\s$x\s' /tmp/filtro.txt
done

===============

Se eu uso ela sem variavel ($x) funciona, com variavel não. Está faltando algo?

Grato.



  


2. MELHOR RESPOSTA

Phillipe Smith
SmithuX

(usa Arch Linux)

Enviado em 12/08/2015 - 14:52h

zwe escreveu:


Aeeeee SmithuX ;


Era isso mesmo, aspas duplas! Funcionou.

Sabe me explicar a diferença de usar a aspas simples com duplas. Sempre peco nisso!

Abraços.


Opa! Sei sim meu camarada.
O que acontece é que no SHELL, aspas simples não interpreta nada, ou seja, exibe todo conteúdo dentro delas como foi escrito.
Já com as aspas duplas, o SHELL faz uma varredura dentro do conteúdo delas para verificar se há algum comando ou variável para ser interpretado antes de ser exibido.





3. Re: Regexp - Shell Script

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 12/08/2015 - 13:08h

Olá,

O caratere $, em REGEX significa fim de linha, por isso o erro.
Para resolver, coloque a variável entre aspas duplas, assim:
grep -P --color '\s"$x"\s' /tmp/filtro.txt 


EDIT:: havia colocado as aspas no lugar errado. CORRIGIDO
abs

---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


4. Re: Regexp - Shell Script [RESOLVIDO]

Marcelo Matos
zwe

(usa Ubuntu)

Enviado em 12/08/2015 - 13:15h


Olá tonyhts
Tudo bem?

Já tinha tentando colocar a variável dentro das aspas duplas, mais mesmo assim não funciona, não encontra o resultado esperado. Tenho certeza que a busca tinha que retornar algo, mais nada encontra :(

Parece que não está reconhecendo o /s. Via linha de comando funciona só sem a variável, mais colocando a variável não encontra.

Grato.



5. Re: Regexp - Shell Script [RESOLVIDO]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 12/08/2015 - 13:48h

Opa!
Desculpe a demora.

Era pra funcionar. Tente assim:
egrep --color '\s"$x"\s' /tmp/filtro.txt 


abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


6. Re: Regexp - Shell Script [RESOLVIDO]

Marcelo Matos
zwe

(usa Ubuntu)

Enviado em 12/08/2015 - 14:34h


Opa;

Também já tinha testado com "egrep" também. Ele varre o "for" e não "grepa" nenhum parametro do filtro.txt.

Muito estranho!

Agradeço a sua ajuda.


7. Re: Regexp - Shell Script [RESOLVIDO]

Phillipe Smith
SmithuX

(usa Arch Linux)

Enviado em 12/08/2015 - 14:45h

Então, a questão aí é que o as aspas de fora devem ser duplas e não simples:
grep -P --color "\s$x\s" /tmp/filtro.txt 

Se ainda assim não funcionar, tenta escapar o $:
grep -P --color "\s\$x\s" /tmp/filtro.txt 



8. Re: Regexp - Shell Script [RESOLVIDO]

Marcelo Matos
zwe

(usa Ubuntu)

Enviado em 12/08/2015 - 14:48h


Aeeeee SmithuX ;


Era isso mesmo, aspas duplas! Funcionou.

Sabe me explicar a diferença de usar a aspas simples com duplas. Sempre peco nisso!

Abraços.


9. Re: Regexp - Shell Script [RESOLVIDO]

Marcelo Matos
zwe

(usa Ubuntu)

Enviado em 12/08/2015 - 14:57h


Entendi!

Muito obrigado novamente SmithuX pela ajuda!

Agradeço também tonyhts pela intenção e paciencia.

Abraços.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts