将元素计数添加到包含集合的文件中每行的末尾

时间:2017-06-06 17:33:53

标签: bash unix sed

我有一个包含数据集的文件,我需要为每行/记录添加总行数。

文件示例:

set1-open
record
record
record
record
set1-close
set2-open
record
record
record
record
record
set2-close

依旧......

我想:

set1-open
record 4
record 4
record 4
record 4
set1-close
set2-open
record 5
record 5
record 5
record 5
record 5
set2-close

我在Shell中写这个,所以sed会更受欢迎。

1 个答案:

答案 0 :(得分:0)

这可能适合你(GNU sed):

sed -r '/open/{x;s/.*/0/;x};//,/close/{//b;x;:a;s/9(#*)$/#\1/;ta;s/$/:0123456789/;s/(.)(#*):.*\1(.).*/\3\2/;y/#/0/;x;G;s/\n/ /}' file

在遇到记录块开始时清除保留空间(HS)并使用设置为零的计数器进行准备。在一个记录块中,使用HS来保持一个递增的计数器,然后将一个副本附加到每个记录。