我正在尝试弄清楚如何使用 awk 根据第 6 列的值变化强制更改文件第 3 列的连续编号,但保留间距?有人可以帮忙吗?
以下是一个例子:
0.00 47258 0 33103.5 33051.0 -9.20
0.00 47258 0 33103.5 33051.0 -9.20
0.00 47258 0 34329.3 34185.7 -55.44
0.00 47258 0 34329.3 34185.7 -55.44
0.00 47258 0 32677.6 32493.5 30.22
0.00 47258 0 32677.6 32493.5 30.22
我想实现这个目标:
0.00 47258 1 33103.5 33051.0 -9.20
0.00 47258 1 33103.5 33051.0 -9.20
0.00 47258 2 34329.3 34185.7 -55.44
0.00 47258 2 34329.3 34185.7 -55.44
0.00 47258 3 32677.6 32493.5 30.22
0.00 47258 3 32677.6 32493.5 30.22
答案1
怎么样
awk '$6 != last {++n; last = $6} {$3 = n} 1'
前任。
$ awk '$6 != last {++n; last = $6} {$3 = n} 1' file
0.00 47258 1 33103.5 33051.0 -9.20
0.00 47258 1 33103.5 33051.0 -9.20
0.00 47258 2 34329.3 34185.7 -55.44
0.00 47258 2 34329.3 34185.7 -55.44
0.00 47258 3 32677.6 32493.5 30.22
0.00 47258 3 32677.6 32493.5 30.22