Script de shell para filtrar apenas a data de uma determinada coluna de um arquivo .csv e salvar a saída em outro arquivo csv

2

Considere um arquivo .csv com datas listadas na 6ª coluna em formato 7/20/2017 17:00 por exemplo.

Se eu der entrada como 7/11/2017 , então deve filtrar a coluna que tem a data de entrada correspondente e a saída deve ser salva em outro arquivo .csv

Eu preciso de um comando para filtrar a 6ª coluna com base na entrada fornecida.

file.csv tem entradas abaixo:

23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/21/2017 17:00,23,iii,89
23,54,one,tree,56,7/30/2017 17:00,23,iii,89

da mesma forma, várias entradas que datam e formatam a hora na sexta coluna. Entrada dada em tempo de execução como ler 7/20/2017 , então deve filtrar a data da 6ª coluna e salvar as entradas de saída em outro arquivo .csv.

    
por user8554534 11.10.2017 / 20:02

2 respostas

1

Simplesmente com awk :

awk -F, -v d="7/20/2017" '$6~d' input.csv > dates.csv

O conteúdo dates.csv :

23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/20/2017 17:00,23,iii,89

Se o valor da data vem da variável shell:

d="7/20/2017"
awk -F, -v d="$d" '$6~d' input.csv > dates.csv
    
por 11.10.2017 / 20:15
0

Supondo que haja apenas uma coluna com uma data nesse formato:

$ grep -F '7/20/2017' file.csv
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/20/2017 17:00,23,iii,89

Você pode redirecionar isso para um novo arquivo:

$ grep -F '7/20/2017' file.csv >new.csv

Para analisar adequadamente um arquivo CSV, use um analisador de CSV, como o criado nas ferramentas do CSVkit :

$ csvgrep -c 6 -m '7/20/2017' file.csv
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
23,54,one,tree,56,7/20/2017 17:00,23,iii,89
    
por 12.10.2017 / 21:32