Como selecionar linhas de um arquivo CSV com base em diferentes valores de coluna?

1

Eu tenho um arquivo CSV com valores como os seguintes:

col1,col2,col3,col4,col5,col6,col7
1,0,0,0,0,BTS,Active
4,5,3,1,1,LocalMode,Offlne
1,2,5,6,3,PermFault,Offline
1,2,6,6,2,BSC,Active
7,8,2,3,2,NE,Offline
1,7,6,5,2,BSC,Active

Eu quero buscar as linhas de valores desse arquivo CSV de forma que as seguintes condições de amostra sejam atendidas:

1) if (col7="Ativo")     então         soma dos valores col1 de todas as linhas

2) if (col6 == somevalue & coluna5! = algunsvalores) então       soma dos valores col1 de todas as linhas.

Eu posso buscar as linhas do arquivo CSV com base nos valores de uma coluna que atende à minha primeira condição com o seguinte comando awk:

awk -F, '$7 == "Active" { print }' test.csv

Como posso usar várias condições neste comando awk que verifica vários valores de coluna como mencionado na condição de amostra 2 acima, em que preciso verificar o presente de algum texto específico em col6 e, ao mesmo tempo, preciso ignorar algumas palavras-chave da coluna 5 . Existe uma maneira melhor e mais fácil de fazer isso em vez de awk?

    
por Ankit Vashistha 14.07.2015 / 11:16

1 resposta

1

De A linguagem de programação AWK :

The simplest awk program is a sequence of pattern-action statements:
pattern { action }
pattern { action }
...

Então, você pode tentar seguir:

awk -F, '
         $7 == "Active" { x += $1; };
         $6 == "value6" && $5 != value5 { y += $1; };
         END { print x, y; }
        ' file
    
por 14.07.2015 / 11:29