如何在行尾添加模式匹配数的计数器?

时间:2013-02-02 18:38:43

标签: bash sed awk

我试图在行尾添加模式匹配的计数器。

示例输入:

>first_match
a
b
>second_match
c
d

想要输出:

>first_match,1
a
b
>second_match,2
c
d

我做的是这个,但我不知道如何添加计数器:

sed '/>.*$/ s/$/,/' file

1 个答案:

答案 0 :(得分:4)

我注意到您已标记此,但仅显示sed中的示例。

Awk是一个具有不同优势和局限的不同工具。特别是awk有一个更为一般的变量概念,然后sed会这样做,这变得非常容易。

尝试:

awk '/^>/{printf("%s,%d\n",$0,++counter);next}{print $0}' file

更“尴尬”的解决方案就是:

awk '/^>/ { $0=$0 "," ++i }1' file

两者都利用了未初始化变量的默认值。