Divide um arquivo CSV em arquivos menores com base em alguma condição

1

Eu tenho um arquivo com valores abaixo:

Server1,12.22.21.13,1234,[email protected]
Server2,12.12.12.12,1223,[email protected]
Server3,13.11.11.11,1234,[email protected]
Server4,11.11.11.11,1234,[email protected]

Eu quero dividir o arquivo com base no endereço de e-mail. Todas as linhas com e-mail como [email protected] devem vir em um arquivo chamado file1 e assim por diante.

É um arquivo muito grande e não posso codificar todos os IDs de e-mail em uma declaração de caso.

    
por vartika dhupar 20.04.2017 / 12:07

1 resposta

0

(gawk)

awk -F"," '{ print $0 >> $4".csv"}' filename

Expl:

-F"," -- Use "comma" field separator (FS) 
$0 -- the whole line of input
$4 -- the 4-th field of line ($NF -- the last field)
>> -- redirection operator, from 'info gawk':

'print ITEMS >> OUTPUT-FILE'
  This redirection prints the items into the preexisting output file
  named OUTPUT-FILE.  The difference between this and the single-'>'
  redirection is that the old contents (if any) of OUTPUT-FILE are
  not erased.  Instead, the 'awk' output is appended to the file.  If
  OUTPUT-FILE does not exist, then it is created.
    
por 20.04.2017 / 12:20