Gerar nova saída filtrando 2 campo

1. Gerar nova saída filtrando 2 campo

Felipe Duran de Aquino
Felipe09

(usa Outra)

Enviado em 23/08/2018 - 11:10h

Galera

estou tentando gerar nova saída de um arquivo onde a 1°coluna é RAEMM013 e 5° é 20180724.

cat EMM_RAID_GPRS_2018_07_25.csv | '{if ($1 == "RAEMM013" && $5 == "20180724") print ($0)}'

alguém pode ajudar?


  


2. Re: Gerar nova saída filtrando 2 campo

Paulo Bonfanti
pbonfanti

(usa Debian)

Enviado em 23/08/2018 - 12:34h

Felipe09 escreveu:

Galera

estou tentando gerar nova saída de um arquivo onde a 1°coluna é RAEMM013 e 5° é 20180724.

cat EMM_RAID_GPRS_2018_07_25.csv | '{if ($1 == "RAEMM013" && $5 == "20180724") print ($0)}'

alguém pode ajudar?

Se RAEMM013 não aparecer mais de uma vez no mesma linha você poderia usar grep:

grep '^RAEMM013.*20180724' EMM_RAID_GPRS_2018_07_25.csv
Que equivale a dizer: Case linhas que iniciam com RAEMM013 e ainda na mesma linha possuam a entrada '20180724' . Isso vai imprimir as linhas completas.
Se você quer somente as colunas 1 e 5 você pode filtrar com awk , neste caso considerando que seu separador de campos e é ponto e virgula,
se for o TAB, você não usa -F :

grep '^RAEMM013.*20180724' EMM_RAID_GPRS_2018_07_25.csv | awk -F \; '{print $1,$5} '

Tenho quase certeza que a solução exata pra você pode ser feita com uma ou duas linhas de awk apenas. Mas ainda não descobri exatamente como.
Vou dar mais uma pesquisada e se achar a solução exata atualizo o post.

Tenta essa:

awk '( $1 ~ /RAEMM013/ && $5 ~ /20180724/ ) {print $0}'

Com isso o awk deve casar o que você quer e imprimir as linhas inteiras, se quiser que o resultado imprima somente as colunas 1 e 5, você troca "print $0" por "print $1,$5"

Referência: Effective Awk Programming - Arnold Robbins




3. Re: Gerar nova saída filtrando 2 campo

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 23/08/2018 - 19:03h

Felipe09 escreveu:

Galera

estou tentando gerar nova saída de um arquivo onde a 1°coluna é RAEMM013 e 5° é 20180724.

cat EMM_RAID_GPRS_2018_07_25.csv | '{if ($1 == "RAEMM013" && $5 == "20180724") print ($0)}'

alguém pode ajudar?


Boa noite.
Segue sugestão:
awk '$1 ==  "RAEMM013" && $5 == "20180724" {print $0}' EMM_RAID_GPRS_2018_07_25.csv 

Se o Separador de Campo for diferente de "espaço", deve ser informado.
Exemplo para dois pontos.
awk -F":" '$1 ==  "RAEMM013" && $5 == "20180724" {print $0}' EMM_RAID_GPRS_2018_07_25.csv 


Att.:
Marcelo Oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts