Как удалить x нулей из начала файла?

Как удалить x нулей из начала файла?

Итак, я сделал десятичный преобразователь в двоичный, но сейчас он не обрезает нули в начале. Если я введу 64 для $1, он начнется с 13 нулей, что довольно некрасиво, но я не знаю, как их обрезать. Есть ли помощь?

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

решение1

Есть ли конкретная причина, по которой вы использовали именно этот алгоритм?

Я бы лучше построил двоичный файл в переменных оболочки, чем в файле. В таком случае вы можете убрать ведущие нули, добавив ноль к числу, например

expr 00001111 + 0
1111

Также, если вам нужно использовать файл, я бы предложил использовать /tmp вместо ~/Documents для хранения временных файлов. И наконец, если бы я был вами, я бы предпочел построить двоичный файл с помощью метода деления, который естественным образом заканчивается, когда преобразование завершено, таким образом избегая проблемы ведущих нулей, а не решая ее.

Связанный контент