Pular para o conteúdo

Usando grep. [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Usando grep. [RESOLVIDO]

Enviado em 31/12/2013 - 09:59h

Ola pessoal!

Tenho um arquivo assim:
--------------------------
01 0000: push %ebp
02 0001: mov %esp,%ebp
--------------------------

Como usaria o grep para obter uma saída assim ?:
--------------------------
: push %ebp
: mov %esp,%ebp
--------------------------

Ou assim:
--------------------------
"push %ebp"
"mov %esp,%ebp"
--------------------------

Ou algo que filtre de um ponto ate o final do texto ?

Eh para economizar tempo e nao ter que programar isso.

Grato!

Responder tópico

2. Re: Usando grep. [RESOLVIDO]

Melhor resposta

Enviado em 02/01/2014 - 19:37h

Parece que consegui cara!!!

Utilizando a opção -P que utiliza expressões regulares ao estilo do Perl, veja como ficou:


phoemur ~/bash/teste $ cat arquivo.txt
01 0000: push %ebp
02 0001: mov %esp,%ebp
phoemur ~/bash/teste $ grep -o -P '(?<!:)\w+\s%.*' arquivo.txt
push %ebp
mov %esp,%ebp
Agora precisaria ver uma extensão maior da saída pra ver se está combinando certinho...

abraços

3. Re: Usando grep. [RESOLVIDO]

Enviado em 31/12/2013 - 10:28h

gokernel escreveu:

Ola pessoal!

Tenho um arquivo assim:
--------------------------
01 0000: push %ebp
02 0001: mov %esp,%ebp
--------------------------

Como usaria o grep para obter uma saída assim ?:
--------------------------
: push %ebp
: mov %esp,%ebp
--------------------------

Ou assim:
--------------------------
"push %ebp"
"mov %esp,%ebp"
--------------------------

Ou algo que filtre de um ponto ate o final do texto ?

Eh para economizar tempo e nao ter que programar isso.

Grato!
Se só tem um dois-pontos, faz assim:

 $ cat arquivo | grep criterios | cut -d':' -f2 
Explicando: o cat joga o arquivo pro pipe, o grep lê o pipe filtrando pelos critérios e joga pra outro pipe que usa o cut pra separar o arquivo em colunas usando os dois-pontos como caractere de separação de colunas (no parâmetro -d do cut são aspas simples). Pra obter a segunda saída, o comando seria
 $ echo \"$(cat arquivo | grep criterios | cut -d':' -f2 | cut -d' ' -f2- )\" 

4. Re: Usando grep. [RESOLVIDO]

Enviado em 31/12/2013 - 10:34h

pode ser também


$ gawk -F: '{print $2 }' arquivo

espero que ajude

5. Re: Usando grep. [RESOLVIDO]

Enviado em 31/12/2013 - 10:38h

Olá tenta esse comando:

#awk -F: '{print $2" "$3}' <caminho do arquivo>


6. Re: Usando grep. [RESOLVIDO]

Enviado em 31/12/2013 - 11:21h

Opa desculpa pala falta de mais info ..., estou usando o windows e tenho somente o grep ...

Poderiam indicar como fazer somente com o grep ???

Abraços !


7. Re: Usando grep. [RESOLVIDO]

Enviado em 02/01/2014 - 15:37h

olha amigo, dentro dos meus conhecimentos o grep faz tratativa de texto, mas nao sei se ele difere colunas.

acredito que tenha que ver a parte de expressões regulares, para conseguir chegar no seu objetivo.

8. Re: Usando grep. [RESOLVIDO]

Enviado em 02/01/2014 - 19:29h

O mais perto que eu cheguei apenas com grep foi utilizando a opção -o do GNU grep:

filtrando do dois pontos até o fim da linha


phoemur ~/bash/teste $ cat arquivo.txt
01 0000: push %ebp
02 0001: mov %esp,%ebp
phoemur ~/bash/teste $ grep -o ':.*$' arquivo.txt
: push %ebp
: mov %esp,%ebp
Porém note que ainda ficou o dois pontos no início...
O grep não foi feito pra separar colunas, ele como default imprime a linha inteira...
Pra fazer o que você quer precisaria do cut mesmo como o lcavalheiro sugeriu ou então awk, sed ou mesmo perl ou python seria bem fácil também...

Use o que estiver á sua disposição...

9. Re: Usando grep. [RESOLVIDO]

Enviado em 03/01/2014 - 07:53h

Muito bem phoemur,

expressões regulares resolvem muita coisa :D

10. Re: Usando grep. [RESOLVIDO]

Enviado em 03/01/2014 - 12:41h


Pessoal, grato pelo retorno ... já resolvido aqui via codigo C mesmo ...

Abraço !!!

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder