如何從檔案開頭刪除 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 來保存臨時文件。最後,如果我是你,我更願意使用除法來構造二進制,當轉換完成時它自然結束,從而避免前導零的問題而不是解決它。

相關內容