Filtrar linhas de um arquivo a partir de outro arquivo

1. Filtrar linhas de um arquivo a partir de outro arquivo

Amanda Carolina da Silva Queiroz
amandacsiilva

(usa Ubuntu)

Enviado em 17/12/2020 - 17:39h

Olá. Quero filtrar informações de um arquivo X que são semelhantes aos que estão no arquivo Y. Por exemplo, no meu arquivo Y tem:


2778 -6.127 -37.465
2779 -6.136 -37.465
2780 -6.145 -37.465
3281 -6.154 -37.455
3282 -6.163 -37.455
4190 -5.337 -37.437
4191 -5.346 -37.437
4243 -5.813 -37.437
4244 -5.822 -37.437


E quero encontrar as linhas que tem esta mesma formatação no arquivo X. É possível fazer isso? Se sim, tem como alguém me ajudar?


  


2. Re: Filtrar linhas de um arquivo a partir de outro arquivo

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 17/12/2020 - 19:21h

amandacsiilva escreveu:

Olá. Quero filtrar informações de um arquivo X que são semelhantes aos que estão no arquivo Y. Por exemplo, no meu arquivo Y tem:


2778 -6.127 -37.465
2779 -6.136 -37.465
2780 -6.145 -37.465
3281 -6.154 -37.455
3282 -6.163 -37.455
4190 -5.337 -37.437
4191 -5.346 -37.437
4243 -5.813 -37.437
4244 -5.822 -37.437


E quero encontrar as linhas que tem esta mesma formatação no arquivo X. É possível fazer isso? Se sim, tem como alguém me ajudar?

Vc quer um diff?

http://www.bosontreinamentos.com.br/linux/como-comparar-arquivos-no-linux-com-cmp-comm-diff-e-sdiff/


3. Re: Filtrar linhas de um arquivo a partir de outro arquivo

ruan
ruah11

(usa Outra)

Enviado em 18/12/2020 - 07:03h

Vc pode usar esse arquivo como fonte de expressões para o grep
procurar em um outro arquivo..

        -f FILE, --file=FILE
Obtain patterns from FILE, one per line. If this option is used
multiple times or is combined with the -e (--regexp) option,
search for all patterns given. The empty file contains zero
patterns, and therefore matches nothing.


Algo como:
$ grep -F -f [ARQ_PADRÕES]  [ARQ_COMPARAÇÃO] 


A opção -F para não tentar interpretar os padrões do arquivo como expressões
regulares, somente como string fixa (no seu caso, pode não ser necessário).

Por exemplo, se você fizer :
$ grep -F -f .bashrc .bashrc 

Ele vai localizar todas as linhas que tem em .bashrc
em .bashrc, ou seja, vai casar todas as linhas,
obveamente.

Se precisar editar o arquivo com os padrões para comparação,
ainda é possível com
a seguinte sintaxe (substituição de processo na shell).
No caso, aqui estou só pegando o primeiro campo
de cada linha pelo delimitador '-' do arquivo com os padrões
de comparação, só para exemplo..

$ grep -F -f  <(cut -d- -f1 [ARQ_PADRÕES])   [ARQ_COMPARAÇÃO] 





4. Re: Filtrar linhas de um arquivo a partir de outro arquivo

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 18/12/2020 - 21:43h

amandacsiilva escreveu:

Olá. Quero filtrar informações de um arquivo X que são semelhantes aos que estão no arquivo Y. Por exemplo, no meu arquivo Y tem:


2778 -6.127 -37.465
2779 -6.136 -37.465
2780 -6.145 -37.465
3281 -6.154 -37.455
3282 -6.163 -37.455
4190 -5.337 -37.437
4191 -5.346 -37.437
4243 -5.813 -37.437
4244 -5.822 -37.437


E quero encontrar as linhas que tem esta mesma formatação no arquivo X.
É possível fazer isso?
Se sim, tem como alguém me ajudar
?

Boa noite Amanda.
A mesma formatação, ou, o mesmo conteúdo....?
Formatação do exemplo postado, arq Y:
^[0-9]{4} \-[0-9]\.[0-9]{3} \-[0-9]{2}\.[0-9]{3}$
grep -E '(^[0-9]{4} \-[0-9]\.[0-9]{3} \-[0-9]{2}\.[0-9]{3}$)' arqx

Conteúdo: entendo como linhas iguais...

Segue:
cat arqx
2778 -6.127 -37.465
2779 -6.136 -37.465
1234 -5.678 -99.999
12345 -5.111 -00.000
1111 -2.222 -33.333
cat arqy
2778 -6.127 -37.465
2779 -6.136 -37.465
2780 -6.145 -37.465
3281 -6.154 -37.455
3282 -6.163 -37.455
1234 -5.678 -99.999
4190 -5.337 -37.437
4191 -5.346 -37.437
4243 -5.813 -37.437
4244 -5.822 -37.437

Busca pela "formatação" do arqy no arqx:
grep -E '(^[0-9]{4} \-[0-9]\.[0-9]{3} \-[0-9]{2}\.[0-9]{3}$)' arqx
2778 -6.127 -37.465
2779 -6.136 -37.465
1234 -5.678 -99.999
1111 -2.222 -33.333
Busca por linhas iguais:
grep -f arqy arqx
2778 -6.127 -37.465
2779 -6.136 -37.465
1234 -5.678 -99.999

______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts