Tente isto:
% awk -F , -v OFS=, '$3/=10' <file
A,10,2,30,40,50
B,20,4,10,30,60
C,30,5,20,40,10
D,40,5,20,10,30
Estou tendo um arquivo cujo conteúdo é o seguinte:
A,10,20,30,40,50
B,20,40,10,30,60
C,30,50,20,40,10
D,40,50,20,10,30
Desejo realizar alguma operação aritmética (digamos, Divisão por 10) em uma coluna específica (digamos, coluna 3) do arquivo CSV acima. Então, lê-se:
A,10,2,30,40,50
B,20,4,10,30,60
C,30,5,20,40,10
D,40,5,20,10,30
Como isso pode ser feito?
Se você realmente quer fazer isso no bash, você pode:
$ while IFS="," read a b c rest; do
printf "%s,%s,%s,%s\n" $a $b $((c/10)) $rest;
done < file.csv
A,10,2,30,40,50
B,20,4,10,30,60
C,30,5,20,40,10
D,40,5,20,10,30
Embora isso funcione para aritmética de inteiros simples, o bash não pode lidar com números de ponto flutuante, então se você tentasse uma operação aritmética que produzisse números não inteiros, ele falharia. Horrivelmente. O Bash realmente não é a melhor ferramenta para o trabalho aqui.
Tags bash bash-script