我有一个由xy数据块组成的大数据文件,块由空行分隔。现在我想将所有x更改为一组序列号,并从1开始为下一个块。每个块中的行数可以不同。
输入:
165168 14653
5131655 51365
155615 1356
13651625 13651
12 51
55165 51656
64 64
651456 546546
期望的输出:
1 14653
2 51365
3 1356
1 13651
2 51
3 51656
1 64
2 546546
答案 0 :(得分:4)
我会用:
$ awk '!NF{i=0; print; next} {print ++i, $2}' file
1 14653
2 51365
3 1356
1 13651
2 51
3 51656
1 64
2 546546
这是一个保持计数器i
并正确重置的问题。
!NF{i=0; print; next}
如果没有字段,也就是说,如果该行为空,则打印一个空行并重置计数器。{print ++i, $2}
否则,递增计数器并将其与第二个字段一起打印。答案 1 :(得分:3)
甚至可能
awk '!NF { n=NR } NF { $1=NR-n } 1' file
因此,在空行中,我们将n
设置为当前行号。在非空行上,我们将第一个字段更改为当前行号减去n
。打印所有行。