shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: grep - como localizar caracteres especiais


From: Julio C. Neves
Subject: Re: [shell-script] Re: grep - como localizar caracteres especiais
Date: Mon, 10 Jun 2013 21:58:00 -0300

Mas não haveria esse blablablá todo se vc houvesse descrito o problema de
uma forma sucinta e objetiva.

"Quero pesquisar uma palavra que esteja entre espaços em branco, ou seja a
primeira ou última de uma linha."

Vc queria uma palavra entre espaços e falava em hífen. Isso confunde...

Abcs,
Julio
*@juliobash
*



Em 10 de junho de 2013 16:41, nerobarrabas <address@hidden> escreveu:

> **
>
>
> Pessoal,
> Com a dica do Casanova, "corrigida" pelo Julio, funcionou.
> Vejam:
>
> # var="Nero-Barrabas"
> # echo $var | grep -E '(^| )'Nero'( |$)'
> retornou nada
> # echo $var | grep -E '(^| )'Nero-'( |$)'
> retornou nada
> # echo $var | grep -E '(^| )'Nero-Barraba'( |$)'
> retornou nada
> # echo $var | grep -E '(^| )'Nero-Barrabas'( |$)'
> retornou Nero-Barrabas
>
> Considerem o caso encerrado.
>
> Valeu!
>
> Diramos
>
> --- Em address@hidden, Alfredo Casanova <atcasanova@...>
> escreveu
> >
> > foi mal, escrevi pelo celular e meio com pressa, o julio corrigiu meu
> grep
> > ali :)
> >
> >
> > 2013/6/9 nerobarrabas <diramos@...>
> >
> > > **
> > >
> > >
> > > Junior,
> > > É exatamente isso que você falou:
> > >
> > >
> > > Nero-Barrabas <---- Não deve retornar
> > > Nero- <--- Não deve retornar
> > > Nerokknknk <--- Também não
> > > Nero <--- Agora sim
> > >
> > > Casanova, não deu certo suas sugestão. Veja:
> > >
> > > # echo Nero-Barrabas | grep -E "[^ ]Nero[$ ]"
> > > # echo Nero-Barrabas | grep -E "[^ ]Nero-[$ ]"
> > > # echo Nero-Barrabas | grep -E "[^ ]Nero-Barrabas[$ ]"
> > > # echo "Nero-Barrabas" | grep -E "[^ ]Nero-Barrabas[$ ]"
> > >
> > > Nenhum dos comandos retorna algo.
> > > Os dois últimos deveriam retornar Nero-Barrabas
> > > Vejam a versão do meu grep:
> > > # grep -V
> > > GNU grep 2.6.3
> > >
> > > Será que tem a ver?
> > >
> > > Diramos
> > >
> > > --- Em address@hidden, Alfredo Casanova <atcasanova@>
> > > escreveu
> > >
> > > >
> > > > grep -E "[^ ]Nero[$ ]"
> > > > Em 09/06/2013 10:06, "Junior" <lazarus.linux@> escreveu:
> > > >
> > > > > **
> > >
> > > > >
> > > > >
> > > > > Pelo que entendi ele quer que retorne apenas se encontrar a string
> Nero
> > > > > numa frase:
> > > > >
> > > > > Nero-Barrabas <---- Não deve retornar
> > > > > Nero- <--- Não deve retornar
> > > > > Nerokknknk <--- Também não
> > > > > Nero <--- Agora sim
> > > > >
> > > > > Em 09-06-2013 09:59, nerobarrabas escreveu:
> > > > > >
> > > > > > Caro Julio,
> > > > > >
> > > > > > Obrigado pelas explicações detalhadas e pacientes.
> > > > > > Elucidou muito sobre REs.
> > > > > > Mas veja:
> > > > > > $grep -E '([[:blank:]]|^)Nero[[:blank:][:punct:]]' <<<
> Nero-Barrabas
> > > > > > $Nero-Barrabas
> > > > > > Continua retornando "Nero-Barrabas". E não é o que eu quero, pois
> > > > > > quero que retorne apenas se a string for exatamente "Nero".
> > > > > > Mas pesquisei o bom e velho awk e achei uma solução pro meu caso.
> > > Veja:
> > > > > >
> > > > > > #!/bin/bash
> > > > > > var=$(echo Nero-Barrabas | awk '$1=="Nero" {print $1}')
> > > > > > if [ -z $var ];then
> > > > > > echo "Não achei Nero exato. Meu awk funciona."
> > > > > > else
> > > > > > echo "Achei Nero. Meu awk pirou."
> > > > > > fi
> > > > > >
> > > > > > De qualquer forma, valeu!!!!
> > > > > >
> > > > > > Grato mais uma vez.
> > > > > >
> > > > > > Diramos
> > > > > >
> > > > > > --- Em address@hidden
> > > > > > <mailto:shell-script%40yahoogrupos.com.br>, "Julio C. Neves"
> > > > > > <julio.neves@> escreveu
> > >
> > > > > > >
> > > > > > > Vc disse:
> > > > > > > "Julio,
> > > > > > > Entendi.
> > > > > > > Apliquei todas as opções indicadas.
> > > > > > > Mas meu problema é verificar se a string é exata."
> > > > > > >
> > > > > > > O que é uma string exata? Tem de estar entre brancos? Pode
> estar
> > > > > > seguido de
> > > > > > > pontuação? Vc tem de ver essa definição. O Shell/grep não podem
> > > > > > adivinhar o
> > > > > > > que vc deseja.
> > > > > > >
> > > > > > > Por definição, usando as facilidades de ERs ou do grep, vc pode
> > > > > > pesquisar
> > > > > > > por uma palavra de duas formas:
> > > > > > > » Com a opção -w;
> > > > > > > » Usando bordas (\b).
> > > > > > >
> > > > > > > O problema é que em ambos os casos, uma palavra é composta por
> > > letras,
> > > > > > > números e sublinha (_). Se vc trocar o hífen por um sublinha,
> verá
> > > que
> > > > > o
> > > > > > > comportamento muda. Assim:
> > > > > > > $ echo Nero_Barrabas | grep '\bNero\b'
> > > > > > > $ echo Nero_Barrabas | grep -w 'Nero'
> > > > > > > Não casam com nada.
> > > > > > >
> > > > > > > Aconselho a vc fazer algo do gênero:
> > > > > > > $ grep -E '([[:blank:]]|^)Nero[[:blank:][:punct:]]' <<<
> > > Nero-Barrabas
> > > > > > >
> > > > > > > Sabendo que [[:blank:]] casa com brancos e <TAB> e [[:punct:]]
> casa
> > > > > > com os
> > > > > > > caracteres de pontuação, a ER acima pesquisa a cadeia Nero
> > > precedida
> > > > > por
> > > > > > > branco ou <TAB> ([[:blank:]]) ou (|) no icício (^) sucedida
> por um
> > > > > > branco,
> > > > > > > <TAB> ou caractere de pontuação.
> > > > > > >
> > > > > > >
> > > > > > > Abcs,
> > > > > > > Julio
> > > > > > > *@juliobash
> > > > > > > *
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Em 8 de junho de 2013 22:45, nerobarrabas <diramos@> escreveu:
> > >
> > > > > > >
> > > > > > > > **
> > > > > > > >
> > > > > > > >
> > > > > > > > Julio,
> > > > > > > > Entendi.
> > > > > > > > Apliquei todas as opções indicadas.
> > > > > > > > Mas meu problema é verificar se a string é exata.
> > > > > > > > Veja este exemplo:
> > > > > > > >
> > > > > > > > #!/bin/bash
> > > > > > > > var=$(echo Nero-Barrabas | grep -w 'Nero')
> > > > > > > > RETORNO=$?
> > > > > > > > echo "O retorno foi: $RETORNO"
> > > > > > > > if [ -z $var ];then
> > > > > > > > echo "Não achei Nero exato. Meu grep funciona."
> > > > > > > > else
> > > > > > > > echo "Achei Nero. Meu grep pirou."
> > > > > > > > fi
> > > > > > > > var1=$(echo NeroBarrabas | grep -w 'Nero')
> > > > > > > > RETORNO1=$?
> > > > > > > > echo "O retorno foi: $RETORNO1"
> > > > > > > > if [ -z $var1 ];then
> > > > > > > > echo "Nao achei Nero exato. Meu grep funciona."
> > > > > > > > else
> > > > > > > > echo "Achei Nero. Meu grep funciona."
> > > > > > > > fi
> > > > > > > >
> > > > > > > > Note que não consigo "isolar" Nero quando tem o hífem na
> string.
> > > > > > > > Tentei todas as combinações indicadas por você, e no Papo de
> > > > > Botequim.
> > > > > > > > rsrsrs
> > > > > > > >
> > > > > > > > Poderia ajudar?
> > > > > > > >
> > > > > > > > Grato
> > > > > > > >
> > > > > > > > --- Em address@hidden
> > > > > > <mailto:shell-script%40yahoogrupos.com.br>, "Julio C. Neves"
> > > > > > <julio.neves@>
> > > > > > > > escreveu
> > > > > > > > >
> > > > > > > > > $ echo NeroBarrabas | grep -w 'Nero'
> > > > > > > > > $ echo NeroBarrabas | grep '\bNero\b'
> > > > > > > > > As duas acima resultaram vazio como era de se esperar:
> > > > > > > > > $ echo Nero-Barrabas | grep --color=auto -w 'Nero'
> > > > > > > > > Nero-Barrabas
> > > > > > > > > $ echo Nero-Barrabas | grep --color=auto '\bNero\b'
> > > > > > > > > Nero-Barrabas
> > > > > > > > > Nas duas acima, a palavra Nero estava em vermelho
> > > > > > > > > $ echo Nero-Barrabas | grep -wo 'Nero'
> > > > > > > > > Nero
> > > > > > > > > $ echo Nero-Barrabas | grep -o '\bNero\b'
> > > > > > > > > Nero
> > > > > > > > > A opção -o (match Only) devolve só a parte que casa. P. ex:
> > > > > > > > > $ ifconfig | grep -E
> '\b([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}\b'
> > > > > > > > > eth0 Link encap:Ethernet Endereço de HW 1c:75:08:b0:75:bb
> > > > > > > > > wlan0 Link encap:Ethernet Endereço de HW 88:9f:fa:61:9b:bb
> > > > > > > > > $ ifconfig | grep -Eo
> > > '\b([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}\b'
> > > > > > > > > 1c:75:08:b0:75:bb
> > > > > > > > > 88:9f:fa:61:9b:bb
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Abcs,
> > > > > > > > > Julio
> > > > > > > > > *@juliobash
> > > > > > > > > *
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Em 8 de junho de 2013 12:09, nerobarrabas <diramos@>
> escreveu:
> > > > > > > > >
> > > > > > > > > > **
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > Valeu a todos pelas dicas.
> > > > > > > > > > Mas tô achando que meu grep está louco. rsrs
> > > > > > > > > > Quero procurar a palavra exata "Nero"
> > > > > > > > > > Vejam:
> > > > > > > > > > $ echo NeroBarrabas | grep -w 'Nero'
> > > > > > > > > > Beleza. Retorna vazio.
> > > > > > > > > >
> > > > > > > > > > Mãs:
> > > > > > > > > > $ echo Nero-Barrabas | grep -w 'Nero'
> > > > > > > > > > $ Nero-Barrabas
> > > > > > > > > >
> > > > > > > > > > Porque?
> > > > > > > > > > Será que dá prá fazer com o sed?
> > > > > > > > > >
> > > > > > > > > > Grato
> > > > > > > > > >
> > > > > > > > > > --- Em address@hidden
> > > > > > <mailto:shell-script%40yahoogrupos.com.br>, "Julio C. Neves"
> > > > > <julio.neves@
> > > > > > > > >
> > > > > > > > > > escreveu
> > > > > > > > > > >
> > > > > > > > > > > É pq acabei de fazer um curso de Japonês (por
> > > correspondência)
> > > > > e
> > > > > > > > resolvi
> > > > > > > > > > > deixar uma dica da minha página nesse idioma. Lá está
> > > escrito:
> > > > > > > > > > >
> > > > > > > > > > > "O papo de Botequim está em
> > > > > > > > > > https://wiki.softwarelivre.org/TWikiBar/WebHome";
> > > > > > > > > > >
> > > > > > > > > > > Abcs,
> > > > > > > > > > > Julio
> > > > > > > > > > > *@juliobash
> > > > > > > > > > > *
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Em 6 de junho de 2013 17:35, Ernander (Nander)
> > > > > > <ernander@>escreveu:
> > > > > > > > > > >
> > > > > > > > > > > > **
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > É mesmo Júlio!
> > > > > > > > > > > >
> > > > > > > > > > > > ta Em Chinês!
> > > > > > > > > > > >
> > > > > > > > > > > > Att
> > > > > > > > > > > >
> > > > > > > > > > > > *Ernander Marcus Lataliza Rosendo*
> > > > > > > > > > > > *Certified SonicWall Security Administrator*
> > > > > > > > > > > >
> > > > > > > > > > > > Em 6 de junho de 2013 17:19, Junior <lazarus.linux@>
> > > > > escreveu:
> > > > > > > > > > > >
> > > > > > > > > > > > > **
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > Com certeza vou adquirir teu livro, mas uma coisa
> me
> > > > > > deixou de
> > > > > > > > > > cabelo em
> > > > > > > > > > > > > pé; por que teu site está no idioma asiático? (
> > > > > > > > > > > > http://www.julioneves.com/)
> > > > > > > > > > > > >
> > > > > > > > > > > > > Em 06-06-2013 16:48, Julio C. Neves escreveu:
> > > > > > > > > > > > >
> > > > > > > > > > > > > > $ echo "A
> > > > > > > > > > > > > > á
> > > > > > > > > > > > > > ç
> > > > > > > > > > > > > > 1
> > > > > > > > > > > > > > $
> > > > > > > > > > > > > > @
> > > > > > > > > > > > > > %
> > > > > > > > > > > > > > #
> > > > > > > > > > > > > > ;
> > > > > > > > > > > > > > ;
> > > > > > > > > > > > > > ü" | grep '[^[:alnum:][:cntrl:]]'
> > > > > > > > > > > > > > $
> > > > > > > > > > > > > > @
> > > > > > > > > > > > > > %
> > > > > > > > > > > > > > #
> > > > > > > > > > > > > > ;
> > > > > > > > > > > > > > ;
> > > > > > > > > > > > > > $ echo "A
> > > > > > > > > > > > > > á
> > > > > > > > > > > > > > ç
> > > > > > > > > > > > > > 1
> > > > > > > > > > > > > > $
> > > > > > > > > > > > > > @
> > > > > > > > > > > > > > %
> > > > > > > > > > > > > > #
> > > > > > > > > > > > > > ;
> > > > > > > > > > > > > > ;
> > > > > > > > > > > > > > ü" | grep '[[:punct:]]'
> > > > > > > > > > > > > > $
> > > > > > > > > > > > > > @
> > > > > > > > > > > > > > %
> > > > > > > > > > > > > > #
> > > > > > > > > > > > > > ;
> > > > > > > > > > > > > > ;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Tá tudo lá no Papo de Botequim.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > PS: Acabei de saber que a 9a. edição do meu
> livro já
> > > foi
> > > > > > > > mandada
> > > > > > > > > > para
> > > > > > > > > > > > as
> > > > > > > > > > > > > > livrarias ou pode ser e no site da
> > > > > > > > > > > > > > editora<
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > >
> > > > >
> > >
> http://www.brasport.com.br/informatica-e-tecnologia/linux-br-2/programacao-shell-linux-9a-edicao.html
> > > > > > > > > > > > > >está
> > > > > > > > > > > > > > com 15% de desconto
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Abcs,
> > > > > > > > > > > > > > Julio
> > > > > > > > > > > > > > *@juliobash
> > > > > > > > > > > > > > *
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Em 6 de junho de 2013 16:35, nerobarrabas
> <diramos@>
> > > > > > > > > > > > escreveu:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >> **
> > > > > > > > > > > > > >>
> > > > > > > > > > > > > >>
> > > > > > > > > > > > > >> Pessoal,
> > > > > > > > > > > > > >> Já pesquisei bastante e não consegui uma
> solução:
> > > > > > > > > > > > > >> Como localizar em arquivos os seguintes
> caracteres,
> > > por
> > > > > > > > exemplo:
> > > > > > > > > > > > > >>
> > > > > > > > > > > > > >> '
> > > > > > > > > > > > > >> $
> > > > > > > > > > > > > >> @
> > > > > > > > > > > > > >> %
> > > > > > > > > > > > > >> #
> > > > > > > > > > > > > >>
> > > > > > > > > > > > > >> Notei que para alguns caracteres especiais o
> > > > > contra-barra
> > > > > > > > > > funciona.
> > > > > > > > > > > > > >> Ex: grep '\#' arquivo.txt
> > > > > > > > > > > > > >> Mas para o primeiro caracter da lista acima
> > > > > > (delimitador do
> > > > > > > > > > próprio
> > > > > > > > > > > > > grep,
> > > > > > > > > > > > > >> não funciona.
> > > > > > > > > > > > > >> Existe algum "coringa" para esse tipo de
> caracter?
> > > > > > > > > > > > > >>
> > > > > > > > > > > > > >> Grato
> > > > > > > > > > > > > >>
> > > > > > > > > > > > > >> Diramos
> > > > > > > > > > > > > >>
> > > > > > > > > > > > > >>
> > > > > > > > > > > > > >>
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > [As partes desta mensagem que não continham texto
> > > foram
> > > > > > > > removidas]
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > ------------------------------------
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > ----------------------------------------------------------
> > > > > > > > > > > > > > Esta lista não admite a abordagem de outras
> > > liguagens de
> > > > > > > > > > programação,
> > > > > > > > > > > > > como perl, C etc. Quem insistir em não seguir esta
> > > regra
> > > > > > será
> > > > > > > > > > moderado
> > > > > > > > > > > > sem
> > > > > > > > > > > > > prévio aviso.
> > > > > > > > > > > > > >
> > > > > ----------------------------------------------------------
> > > > > > > > > > > > > > Sair da lista:
> > > > > > address@hidden
> > > > > > <mailto:shell-script-unsubscribe%40yahoogrupos.com.br>
> > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > ----------------------------------------------------------
> > > > > > > > > > > > > > Esta lista é moderada de acordo com o previsto em
> > > > > > > > > > > > > http://www.listas-discussao.cjb.net
> > > > > > > > > > > > > >
> > > > > ----------------------------------------------------------
> > > > > > > > > > > > > > Servidor Newsgroup da lista: news.gmane.org
> > > > > > > > > > > > > > Grupo:
> gmane.org.user-groups.programming.shell.brazil
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Links do Yahoo! Grupos
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > [As partes desta mensagem que não continham texto
> foram
> > > > > > removidas]
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > [As partes desta mensagem que não continham texto foram
> > > > > > removidas]
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > [As partes desta mensagem que não continham texto foram
> > > removidas]
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > [As partes desta mensagem que não continham texto foram
> removidas]
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > > [As partes desta mensagem que não continham texto foram removidas]
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > > [As partes desta mensagem que não continham texto foram removidas]
> > > >
> > >
> > >
> > >
> >
> >
> >
> > --
> > []'s
> > Alfredo Casanova
> > Linux User #228230
> > msn: atcasanova@...
> > tel: +55 61 9655 9619
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]