在基本转换的回显中强制前导零

Beg*_*oul 1 sed echo conversion

我正在尝试获得这样组织的三元值序列:

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 
Run Code Online (Sandbox Code Playgroud)

为此,我使用:

 for i in `seq 001 242`  
 do echo  'obase=3; '$i'' | bc | sed  's/\(.\{1\}\)/\1 /g'  
 done
Run Code Online (Sandbox Code Playgroud)

但我得到

1  
2  
1 0  
1 1  
....  
2 2 2 2 2  
Run Code Online (Sandbox Code Playgroud)

我如何强制回显结果中缺少的 0,因为它们对于用作另一个脚本参数很重要?

cho*_*oba 5

使用printf格式化的数字:

for i in $( seq 1 242 ) ; do
    printf '%05d\n' $( bc <<< 'obase=3; '$i )
done | sed  's/\(.\)/\1 /g'
Run Code Online (Sandbox Code Playgroud)

另外,不需要在 之后放空字符串$i,也不需要{1}在正则表达式中量化。

在 zsh、ksh93、bash 或 bash 中使用大括号扩展可能会更快yash -o braceexpand

printf '%s\n' {0..2}\ {0..2}\ {0..2}\ {0..2}\ {0..2}
Run Code Online (Sandbox Code Playgroud)