Como posso remover um número x de zeros desde o início de um arquivo?

1

Então eu fiz um decimal para o conversor binário, mas atualmente ele não corta os zeros no começo. Se eu entrasse em 64 por $ 1, ele começaria com 13 zeros, o que é bastante desagradável, mas eu não sei como cortá-los. Alguma ajuda?

#!/bin/bash

cat /dev/null > ~/Documents/.tobinary
touch ~/Documents/.tobinary

toBin=$1
counter=0
numZeros=0
first1=0
kill=0
echo $toBin

for v in {19..0}
do
    let temp=2**$v
    let test=$toBin-$temp

    if [ $test -ge 0 ]
    then
            if [ $first1 -eq 0 ]
            then
                    kill=$numZeros
                    let first1++
            fi
            if [ $test -gt 0 ]
            then
                    echo -n 1 >> ~/Documents/.tobinary
                    toBin=$test
            elif [ $test -eq 0 ]
            then
                    echo -n 1 >> ~/Documents/.tobinary
                    while [ $counter -lt $v ]
                    do
                        echo -n 0 >> ~/Documents/.tobinary
                            let counter++
                    done
                    break
            fi
    elif [ $test -lt 0 ]
    then
            echo -n 0 >> ~/Documents/.tobinary
            let numZeros++
    fi
done

cat ~/Documents/.tobinary
    
por J. Doe 01.10.2016 / 07:36

1 resposta

0

Existe uma razão específica para a qual você usou esse algoritmo específico?

Prefiro construir o binário em variáveis de shell do que em um arquivo. Nesse caso, você pode remover os zeros à esquerda adicionando um zero a um número, como

expr 00001111 + 0
1111

Além disso, se você tiver que usar um arquivo, sugiro usar / tmp em vez de ~ / Documents para armazenar arquivos temporários. E, finalmente, se eu fosse você, preferiria construir o binário usando um método de divisão, que naturalmente termina quando a conversão é concluída, evitando assim o problema de zeros iniciais em vez de resolvê-lo.

    
por 01.10.2016 / 10:08