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

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

Re: [shell-script] Duvida para atribuir valor a variavel


From: Julio C. Neves
Subject: Re: [shell-script] Duvida para atribuir valor a variavel
Date: Mon, 11 Jul 2016 10:54:53 -0300

Agora já estou no computador, para contar a qdt de letras 'a' em abracadabra, e a diferença entre as opções sobre as quais conversamos é:

$ grep -a a <<< abracadabra
1
$ grep -o a <<< abracadabra
a
a
a
a
a
$ grep -o a <<<abracadabra | wc -l
5

O Shell faz mágicas, não?

​PS: Estarei o FISL, que ocorrerá esta semana em P. Alegre, dando uma palestra sobre as facilidades do Shell e um minicurso de YAD. Quem estiver por lá, aconselho a assistir o minicurso.​

Abcs,
Julio
@juliobash

P
róximos cursos de Shell
Cidade         Local Período
São Paulo 4Linux 25
-29/07
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 10 de julho de 2016 21:15, address@hidden [shell-script] <address@hidden> escreveu:
 

Ah sim então eu tinha entendido :) o 'grep -c' retorna o número de linhas casadas,
não importa o número de casamentos por linha.
A opção -o retorna cada cadeia pesquisada, uma por uma linha.
Até aí estamos entendidos :)

Pelo que o Rodrigo postou, ele quer contar o número de linhas da saída
de um grep 'simples' sem opções
varerror=$((cat ../var/error.log |grep $DATA | wc -l))

então eu pensei que ele poderia usar a opção -c
$ grep a <<<abracadabra
abracadabra
$ grep a <<<abracadabra | wc -l
1
$ grep -c a <<<abracadabra
1

nesse caso 'grep $DATA /var/error.log | wc -l' deve retornar o mesmo que
'grep -c $DATA /var/error.log' , ou não? Mestre, se vc responder 'não' vou precisar
de um desenho rs
Abraços Paulo Bettega

On 10-07-2016 19:49, 'Julio C. Neves' address@hidden [shell-script] wrote:
>
>
> Fala Paulo, o grep -c não mostra a linha, mostra só o número de linhas que possuem a cadeia pesquisada.
>
> Se a cadeia puder ocorrer mais de uma vez na linha, o correto seria fazer:
> grep -o REGEX ARQUIVO | wc -l
>
> Como estou no celular, não dá para mostrar, mas experimente fazer:
>
> grep -c a <<< abracadabra
>
> E depois:
>
> grep -o a <<< abracadabra | wc -l
>
> Em 10 de jul de 2016 19:05, "address@hidden <mailto:address@hidden> [shell-script]"
> <address@hidden <mailto:address@hidden>> escreveu:
>>
>>
>>
>> Olá mestre Julio, não entendi :) nesse caso de uma linha possuir mais de uma data,
>> o 'grep -c' vai somar cada casamento ao invés de considerar uma linha?
>> A saída normal do grep, mesmo que haja dois casamentos na mesma linha, é mostrar
>> apenas uma vez a linha, não? Agora fiquei na dúvida rs vou pegar um arquivo aqui
>> pra testar.
>> Abraços Paulo Bettega
>>
>>
>> On 10-07-2016 00:10, 'Julio C. Neves' address@hidden <mailto:address@hidden> [shell-script] wrote:
>> >
>> >
>> > Fala Paulo,
>> > A opção -c devolve a qtd de linha que têm a cadeia. Assim sendo, se alguma linha possuir mais de uma data,
>> > dará zebra.
>> >
>> > Em 9 de jul de 2016 22:02, "address@hidden <mailto:address@hidden>
> <mailto:address@hidden <mailto:address@hidden>> [shell-script]"
>> > <address@hidden <mailto:address@hidden>
> <mailto:address@hidden <mailto:address@hidden>>> escreveu:
>> >
>> > __
>>
>> >
>> >
>> > Olá Rodrigo, mais um pitaco, se for só pra pegar o número de linhas, o grep
>> > tem a opçao -c que retorna o número de linhas casadas por arquivo.
>> > Pelo que vc postou a pesquisa é só em um arquivo então "grep -c $DATA /var/error.log"
>> > deve resultar o mesmo que "grep $DATA /var/error.log | wc -l"
>> >
>> > Abraços Paulo Bettega
>> >
>> > On 09-07-2016 18:39, Rodrigo Cunha address@hidden <mailto:address@hidden>
> <mailto:address@hidden <mailto:address@hidden>>
>>
>> > [shell-script] wrote:
>> > >
>> > >
>> > > srs.
>> > > tenho um script com a variavel DATA:
>> > > DATA="" +%Y%m%d`
>> > > e quero criar uma outra variavel utilizando uma pipeline que "grepa" o valor da variavel $DATA em um
>> > arquivo.
>> > > Testei da forma abaixo mas não consegui, alguém sabe como fazer isso?!
>> > >
>> > > varerror=$((cat ../var/error.log |grep $DATA | wc -l))
>> > >
>> > >
>> > > --
>> > > Atenciosamente,
>> > > Rodrigo da Silva Cunha
>> > >
>> > >
>> > > ----------------------------------------------------------
>> > > Enviado por: Rodrigo Cunha <address@hidden <mailto:address@hidden>
> <mailto:address@hidden <mailto:address@hidden>>>
>> > > ----------------------------------------------------------
>> >
>> >
>> > ----------------------------------------------------------
>> > Enviado por: "Julio C. Neves" <address@hidden <mailto:address@hidden>>
>> > ----------------------------------------------------------



reply via email to

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