
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