使用“seq”,如果一列等于5,则继续另一列

使用“seq”,如果一列等于5,则继续另一列

例如,我想从最右边的一列开始计数,一旦达到 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'

相关内容