Usando um analisador csv real em uma shell :
#!/bin/bash
csvcut -c 1,2 -d, file.csv |
while IFS=, read -r c1 c2; do
echo $((c1 * c2)) # do some arithmetic with variables c1 & c2
done
Verifique o csvkit
Eu tenho um arquivo .CSV do qual preciso extrair números. Exemplo de arquivo:
#File of numbers
1,2,3,4,5
6,7,8,9,10
Eu quero usar o awk (ou outro utilitário) para extrair o primeiro número e o segundo número e armazená-los em uma variável para realizar cálculos dentro do meu script bash. Quero excluir a primeira linha que tem # no começo.
Depois de realizar o cálculo, quero extrair o terceiro número para continuar os cálculos e repetir até obter todos os números. Eu não sei como começar isso e gostaria de receber ajuda. Eu sei que vou precisar colocar o script awk dentro de um loop para obter o número três, quatro, etc., mas estou confuso com a forma de escrever o script awk.
A única maneira de resolver isso indo e voltando entre o awk e o shell é permitir que scripts do AWK gerem o código do shell para o próximo passo. Mas isso parece muito complicado para mim. Eu também recomendaria mover tudo para o awk (ou perl também seria permitido aqui?)
Isso é bastante simples em bash
e outros shells:
while IFS=, read a b c d e ; do
your_stuff
done < your_csv_file
O IFS é o separador de campos de entrada. configure-o para o comando read
apenas para ser uma vírgula.
leia cinco variáveis de cada vez.
Faça suas coisas com suas novas variáveis de shell $ a $ b $ c $ d $ e.
Você deve definir o redirecionamento de entrada no final do loop while
, depois da palavra-chave done
.
Tags awk csv-simple