次のように構成された一連の三項値を取得しようとしています。
0 0 0 0 1
0 0 0 0 2
0 0 0 1 0
0 0 0 1 1
.........
.........
2 2 2 2 2
これを行うには、次を使用します。
for i in `seq 001 242`
do echo 'obase=3; '$i'' | bc | sed 's/\(.\{1\}\)/\1 /g'
done
しかし、私は理解しています
1
2
1 0
1 1
....
2 2 2 2 2
結果に欠けているゼロは、他のスクリプトパラメータとして使用するために重要なので、どのように強制的にエコーするのですか?
ベストアンサー1
数値の書式設定の場合printf
:
for i in $( seq 1 242 ) ; do
printf '%05d\n' $( bc <<< 'obase=3; '$i )
done | sed 's/\(.\)/\1 /g'
また、後ろに空の文字列を入れる必要もなく、正規表現で量子化を行う必要$i
もありません。{1}
zsh、ksh93、bash、または次の中かっこ拡張を使用する方が高速ですyash -o braceexpand
。
printf '%s\n' {0..2}\ {0..2}\ {0..2}\ {0..2}\ {0..2}