sed:最初のx発生にテキストを追加する方法

sed:最初のx発生にテキストを追加する方法

行の最初のx番目の項目の末尾にテキストを追加しようとしています。私はこれをグローバルにそしてn番目の発生で行う方法を知っています。最初にn回発生した場合は、これを行う方法がわかりません。例は、次の内容を含む text.txt ファイルです。

This is a test
junk
This is a test
More junk
This is a test
This is a test
This is a test

また、最初の3回「this is a test」が表示されたら、最後に「.」を追加したいと思います。私が得たい結果は次のとおりです。

This is a test.
junk
This is a test.
More junk
This is a test.
This is a test
This is a test

ベストアンサー1

This.*test正しい正規表現です。アスタリスクは、「前の文字の0回以上」を意味するため、This*testどの行とも一致しません。

今、Sedは算数をうまくいきません。エレガントにしたい場合は、Awkをお勧めします。

awk '/This.*test/{c++};{print $0 (c<4 ? "." : "")}' file

Awkの設定されていない変数と同様に、0として扱われると言えば十分だと思いますc。ただし、追加の説明が必要な場合はお知らせください。

おすすめ記事