例如,我想从最右边的一列开始计数,一旦达到 5,就从第二远的一列继续计数。
0.0.0.0
0.0.0.1
0.0.0.2
0.0.0.3
0.0.0.4
0.0.0.5
0.0.1.5
0.0.2.5
0.0.3.5
0.0.4.5
0.0.5.5
0.1.5.5
0.2.5.5
0.3.5.5
0.4.5.5
0.5.5.5
1.5.5.5
2.5.5.5
3.5.5.5
4.5.5.5
5.5.5.5
到目前为止,我正在考虑使用:
for i in $(seq 0 5); do echo "0.0.0.$i"; done
一次i == 5
,然后设置好i=0
,并将回波移动到第三个位置。
答案1
使用循环:
{
for i in $(seq 0 5); do echo "0.0.0.$i" ; done;
for j in $(seq 1 5); do echo "0.0.$j.$i" ; done;
for k in $(seq 1 5); do echo "0.$k.$j.$i" ; done;
for l in $(seq 1 5); do echo "$l.$k.$j.$i"; done;
}
使用awk
和 更灵活地增加单行输入的重复时间以及可调整的字段数量:
awk -F"." -v OFS="." -v repeat=5 '
{ print $0;
for(c=NF; c>=1; c--){
for (i=1; i<=repeat; i++) { $c=i ; print $0; };
};
}' <<<'0.0.0.0'