¿Cómo puedo eliminar x número de ceros del principio de un archivo?

¿Cómo puedo eliminar x número de ceros del principio de un archivo?

Así que hice un convertidor de decimal a binario pero actualmente no corta los ceros al principio. Si ingresé 64 por $1, comenzaría con 13 ceros, lo cual es bastante desagradable, pero no sé cómo eliminarlos. ¿Alguna ayuda?

#!/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

Respuesta1

¿Existe alguna razón específica por la que utilizó este algoritmo en particular?

Prefiero construir el binario en variables de shell que en un archivo. En tal caso, puede eliminar los ceros iniciales agregando un cero a un número, como

expr 00001111 + 0
1111

Además, si tiene que usar un archivo, sugeriría usar /tmp en lugar de ~/Documents para guardar archivos temporales. Y finalmente, si yo fuera usted, preferiría construir el binario usando un método de división, que naturalmente finaliza cuando se completa la conversión, evitando así el problema de los ceros a la izquierda en lugar de resolverlo.

información relacionada