Faz um loop pelo arquivo csv e salva todos os elementos exclusivos de uma coluna em um array

0

Estou analisando um arquivo csv muito grande e criando muitos sub-arquivos com seu conteúdo de acordo com o valor da primeira coluna. Até agora, o que eu fiz é declarar manualmente um array:

declare -a arr=(
"Value 1"
"Value 2"
)

e, em seguida, faço um loop por essa matriz e crio os arquivos mini-csv com as informações de que me importo, alterando também o nome dos arquivos csv de saída para trocar espaços com sublinhados:

for i in "${arr[@]}"
do 
    NAME=${i// /_}
    echo $header > "$outputpath/$NAME.csv"
    grep "^$i," "$fixed_file" | cut -d ',' -f 4,6 >> "$outputpath/$NAME.csv"
done

Existe uma maneira de automatizar o primeiro passo também? i.e., Posso percorrer o arquivo csv original e preencher arr com todos os valores exclusivos de sua coluna 1?

    
por nvergos 03.10.2016 / 18:01

1 resposta

0

Um caminho:

declare -A arr
while IFS=, read -r one rest
do
  arr[$one]=1
done < input.csv

Em seguida, percorra as teclas:

for i in "${!arr[@]}"
do
  #...
done
    
por 03.10.2016 / 18:35

Tags