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 に答える