如何从文件开头删除 x 个零?

如何从文件开头删除 x 个零?

所以我做了一个十进制到二进制的转换器,但目前它不会在一开始就截掉零。如果我以 1 美元输入 64,它将以 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

您使用这种特定算法有什么具体原因吗?

我宁愿在 shell 变量中构建二进制文件,而不是在文件中。在这种情况下,您可以通过向数字添加零来去除前导零,例如

expr 00001111 + 0
1111

另外,如果您必须使用文件,我建议使用 /tmp 而不是 ~/Documents 来保存临时文件。最后,如果我是你,我更愿意使用除法来构造二进制,当转换完成时它自然结束,从而避免前导零的问题而不是解决它。

相关内容