Awk 如何改进此示例?

Awk 如何改进此示例?,awk,Awk,如何更改上述命令?我想打印: $ seq 12 | awk '{ if(NR%2) { print $0, (NR+1)/2 } else { print $0, NR/2} }' 1 1 2 1 3 2 4 2 5 3 6 3 7 4 8 4 9 5 10 5 11 6 12 6 嗯,把你的算法应用到3: 1 1 2 1 3 1 4 2 5 2 6 2 7 3 8 3 9 3 10 4 11 4 12 4 但我相信还有一个较短的算法…嗯。只需将您的算法应用于3: 1 1 2 1 3 1 4

如何更改上述命令?我想打印:

$ seq 12 | awk '{ if(NR%2) { print $0, (NR+1)/2 } else { print $0, NR/2} }'
1 1
2 1
3 2
4 2
5 3
6 3
7 4
8 4
9 5
10 5
11 6
12 6

嗯,把你的算法应用到3:

1 1
2 1
3 1
4 2
5 2
6 2
7 3
8 3
9 3
10 4
11 4
12 4

但我相信还有一个较短的算法…

嗯。只需将您的算法应用于3:

1 1
2 1
3 1
4 2
5 2
6 2
7 3
8 3
9 3
10 4
11 4
12 4
seq 12|awk '{if((NR%3)==1) { print $0, (NR+2)/3 } else if ((NR%3)==2) { print $0, (NR+1)/3 } else { print $0, NR/3} }'

但我确信还有一个较短的算法…

shorter是例如:seq 12 | awk'{print$0,((NR-1)+3-(NR-1)%3)/3}或者,广义的:seq 12 | awk'BEGIN{s=3};{print$0,((NR-1)+s-(NR-1)%s)/s}将s更改为您喜欢的任何步长范围。较短的是例如:seq 12 | awk'{print$0,((NR-1)+3-(NR-1)%3)/3}或广义的:seq 12 | awk'BEGIN s{s=3};{打印$0,((NR-1)+s-(NR-1)%s)/s}将s更改为您喜欢的任何步长范围。
seq 12|awk '{if((NR%3)==1) { print $0, (NR+2)/3 } else if ((NR%3)==2) { print $0, (NR+1)/3 } else { print $0, NR/3} }'