sedまたはawkを使用してパターンを含む繰り返し行の末尾に数字を追加する方法

sedまたはawkを使用してパターンを含む繰り返し行の末尾に数字を追加する方法

以下を含む.txtファイルがあります。

>ABC
hello
>ABC
thanks
>ABC
for
>ABC
your
>ABC
help

">"を含む繰り返し文字列を次に変更したいと思います。

>ABC_1
hello
>ABC_2
thanks
>ABC_3
for
>ABC_4
your
>ABC_5
help

ベストアンサー1

$ awk '{print $0 (/^>/ ? "_" (++c) : "")}' file
>ABC_1
hello
>ABC_2
thanks
>ABC_3
for
>ABC_4
your
>ABC_5
help

最初のフィールドが異なる場合があり、各最初のフィールド値に一意の数が必要な場合は、単に最初のフィールドにインデックス付けされた配列に数を設定できます。

$ cat file
>ABC
hello
>FOO
thanks
>ABC
for
>ABC
your
>FOO
help

$ awk '{print $0 (/^>/ ? "_" (++c[$1]) : "")}' file
>ABC_1
hello
>FOO_1
thanks
>ABC_2
for
>ABC_3
your
>FOO_2
help

おすすめ記事