根据第六列的值变化更改第三列中的字符串/值-awk

根据第六列的值变化更改第三列中的字符串/值-awk

我正在尝试弄清楚如何使用 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

相关内容