行の最初の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
。ただし、追加の説明が必要な場合はお知らせください。