0
$ 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

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

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

2 回答 2

2

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

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

但我敢肯定还有一个更短的算法......

于 2012-11-23T19:36:12.927 回答
2
awk '{print $0, int((NR+2)/3)}'
于 2012-11-23T20:09:04.407 回答