Text-Processing

使用“seq”,如果一列等於5,繼續另一列

  • December 5, 2020

例如,我想從最右邊的列開始,一旦達到 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,並將回波移動到第三個位置。

使用循環:

{
 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'

引用自:https://unix.stackexchange.com/questions/622844