problemas ao comparar colunas com awk

1. problemas ao comparar colunas com awk

Maria Luisa de Barros Rodrigues
mrodrigues91

(usa Ubuntu)

Enviado em 25/05/2020 - 17:55h

Olá pessoal

Tenho dois arquivos csv para comparar informações. O primeiro deles (Marcadores_MEGArray.csv) tem 3 colunas, a informação a ser comparada está na terceira. O segundo arquivo (posiçõesAIMs.csv) é de coluna única, é a informação que desejo buscar na terceira coluna do primeiro arquivo.
Tentei a comparação com o comando abaixo, porém não me retorna nenhuma informação.

$ awk 'NR==FNR {a[$1]; next} $3 in a {print $0}' Marcadores_MEGArray.csv posiçõesAIMs.csv > resultado.txt

Já conferi os arquivos e existem informações que estão em ambos. Onde posso estar errando? Ou vocês saberiam uma outra forma de fazer essa comparação?

Obrigada




  


2. Re: problemas ao comparar colunas com awk

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/05/2020 - 20:41h


mrodrigues91 escreveu:

Olá pessoal

Tenho dois arquivos csv para comparar informações. O primeiro deles (Marcadores_MEGArray.csv) tem 3 colunas, a informação a ser comparada está na terceira. O segundo arquivo (posiçõesAIMs.csv) é de coluna única, é a informação que desejo buscar na terceira coluna do primeiro arquivo.
Tentei a comparação com o comando abaixo, porém não me retorna nenhuma informação.

$ awk 'NR==FNR {a[$1]; next} $3 in a {print $0}' Marcadores_MEGArray.csv posiçõesAIMs.csv > resultado.txt

Já conferi os arquivos e existem informações que estão em ambos. Onde posso estar errando? Ou vocês saberiam uma outra forma de fazer essa comparação?
Obrigada

Boa noite Mrodrigues.
Tentei com o awk, sem sucesso.....
Segue outra opção:
#!/bin/bash
#clear;
>destino.txt
count=0;
while read line;do let count++;
IFS=";" read -a fld <<< "${line}";
if grep -Ewn "${fld[2]};$" arqB.txt >> destino.txt;then
sed -i '$s/$/;OK;'${count}';'${fld[0]}';'${fld[1]}';'${fld[2]}'/' destino.txt
fi;
done < arqA.txt

Obs.: Dependendo do que quer na saída, pode eliminar o condicional do "grep", e o comando sed....
No script acima, leio o ArqA.txt (tem 03 campos),
Gero a matriz, e busco pelo campo 03 "${fld[2]}" no arqB.txt,
direciono a saída para o destino.txt,
O sed, coloca o nº da linha (arqA.txt, onde casou) e os três campos, na mesma linha..... do destino....
Complicado explicar , rsrsrsrsr
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts