Sedを使用してキーワードカウンタを追加する

Sedを使用してキーワードカウンタを追加する

このようなファイルがあるとしましょう。

Keyword "name"
aaa bbb
ccc ddd

Keyword "another name"
eee fff
ggg
hhh iii

など。

カウンタが与えられた数字から始まるように、ファイルのキーワード行を変更したいと思います。たとえば、5 から始まるキーワード行の番号を指定する場合、キーワード行は次のようになります。

Keyword "5 - name"
Keyword "6 - another name"

など。ファイルの他のすべての行は変更されません。

これを行う方法はありますか?ありがとうございます。

ベストアンサー1

GNU sedがある場合は、標準以外のRコマンドを使用して事前に生成されたシーケンスからインデックスを読み取り、挿入し、sedを再度呼び出すことで結果を並べ替えることができます。

printf '%d\n' {5..100} | sed '/^Keyword/R /dev/stdin' file | 
    sed '/^Keyword/{N; s/Keyword "\([^"]*\)"\n\(.*\)/Keyword "\2 - \1"/}'

ただし、これには代わりにperlorを使用することをお勧めします。awk

awk -v k=5 '/^Keyword/ {sub(/^Keyword \"/, sprintf("Keyword \"%d - ", k++))} 1' file

おすすめ記事