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,因为它们对于用作另一个脚本参数很重要?
使用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)