Cálculo matemático de arquivos diferentes dentro do diretório usando para loop

0

Eu quero realizar alguns cálculos matemáticos em alguns arquivos csv presentes dentro de um diretório, usando-os como entrada. Os arquivos serão aleatórios, portanto, usar nomes estáticos está fora de opção. Além disso, o requisito é gerar uma seqüência real de números usando o primeiro e o último número da planilha csv, ler a contagem real de linhas na planilha e, em seguida, calcular a porcentagem da sequência ausente. Estou usando um loop For para ler arquivos, gerar sequência, fazer um wc -l para contar as linhas, armazená-lo em um arquivo temporário (total.csv) e, em seguida, executar a operação de porcentagem. Às vezes, a planilha pode ter apenas uma linha, de modo que ela deve ser levada em consideração e, se esse for o caso, a porcentagem ausente deverá ser 0, portanto, usando a condição If dentro de For loop. No final, estou removendo o arquivo temp (total.csv) e o loop continuará para todos os arquivos csv no diretório. Veja o que eu fiz.

FILES=$dir/*.csv
for f in $FILES;
do
        var1=$(cat $f | wc -l)
        var2=$(cut -d ',' -f7 $f | head -n 1)
        var3=$(cut -d ',' -f1 $f | head -n 1)
        seq1=$(head -n 3 $f)
        seq2=$(tail -n 3 $f)
        if [ "$seq2" -gt "$seq1" ]; then
        seq $seq1 1 $seq2 | cat > $dir/../total.csv
        total=$(cat $dir/../total | wc -l)
        actual=$(cat $f | wc -l)
        missing=$(expr $total - $actual)
        percentage=$((100*missing/total))
        echo "missing percentage of var1 and var2 is $percentage:"
        rm $dir/total.csv
        else
        echo "Loss percentage is 0"
        fi

done

O script acima lê os arquivos, mas ao gerar a sequência, ele gera um erro. Os números neste erro são a primeira linha do meu arquivo csv de entrada.

./test.sh: line 22: [: 9,-60,18240,28,0,1517400128,2356,0,0,0,0,551: integer expression expected

Estou preso a isso e não consigo entender o problema. Existe algum mecanismo melhor para cumprir o requisito indicado acima? Agradecemos antecipadamente.

    
por rajanan 14.02.2018 / 02:17

0 respostas