Como fazer várias divisões de um arquivo csv com base em valores de coluna exclusivos?

2

Eu tenho um arquivo csv que tem várias colunas. Aqui está um exemplo do que eu estou preso. Abaixo estão os dados de entrada de amostra:

9,-54,18205,28,0,1517400128,2353,0,0,0,0,551
9,-54,18207,28,0,1517400128,2354,0,0,0,0,551
10,-48,18216,28,0,1517400128,2353,0,0,0,0,551
9,-54,18217,28,0,1517400128,2356,0,0,0,0,551
13,-54,18223,28,0,1517400128,2353,0,0,0,0,551

Eu quero dividir os dados com base em valores exclusivos da coluna 1 e depois dividir os resultados com base no valor exclusivo da coluna 7. Atualmente eu estou tentando conseguir isso primeiro dividindo a folha com base na coluna 1, então eu estou lendo os arquivos csv resultantes do diretório, armazenando-o em um arquivo txt de saída e, em seguida, ainda tomando os valores do arquivo txt de saída como variáveis e executando um script awk para dividir os arquivos ainda mais. Mas de alguma forma a segunda divisão não está acontecendo conforme a expectativa. Abaixo está o que eu fiz até agora:

awk -F\, '{print > $7".csv"}' $dir/../testfile.csv

ls -R | grep "\.csv$" > testfile.txt

while IFS= read -r a \n b \n c; do
    awk -F\, '{print > $1".csv"}' $dir/$a
    awk -F\, '{print > $1".csv"}' $dir/$b
    awk -F\, '{print > $1".csv"}' $dir/$c
done < testfile.txt

Por favor me ajude a identificar o problema aqui. Isso tem que estar no shell.

    
por rajanan 12.02.2018 / 07:55

1 resposta

2

Como eu penso um pouco, você finalmente precisa da saída abaixo, que este comando faz:

awk -F, '{print >$1"_"$7".csv"}' infile
    
por 12.02.2018 / 08:19