Bashで文字列変数をソートする方法

Bashで文字列変数をソートする方法

Bashで文字列変数をソートしようとしています。これは予想される動作です。

if str1="123"  , then str2="     123"
if str1="1234" , then str2="    1234"
if str1="12345", then str2="   12345"

printfを使用して印刷する方法を見つけましたが、印刷せずに変数内で行う必要があります。

ベストアンサー1

変数に単一バイト、単一幅文字のみが含まれているとします。

printf -v str2 %8s "$str1"

マルチバイト(まだ単一の幅)文字が含まれている場合は、次のことができます。

printf -v str2 %8s%s '' "$str1"
str2=${str2: -8}

(しかし注意すべき点はカット値が8文字より大きい)。

ここに組み込まれbashたコマンドは結果を変数に保存することをprintfサポートしますが、そうでない場合でもコマンド置換を使用できます。-vprintf

str2=$(printf %8s "$str1")

おすすめ記事