以下のサンプルテキストファイル:
#This is a sample file
## version 3.0
- change 1
- change 2
## version 2.5
- change 1
- change 2
- change 3
## version 2.4
- change 1
- change 2
以下のように、一番上のファイルの最新の変更の直後にあります。
## version 3.0
- change 1
- change 2
次のコマンドを作成できます。
awk -v RS= '{print > ("filename" NR ".txt")}' sample.txt
しかし、すべてのファイルを作成したくありません。必要なものを得るには数分しかかからない。
ベストアンサー1
awkを使用してください。
$ awk -v RS= '/\n-/{print; exit}' sample.txt
## version 3.0
- change 1
- change 2
その出力をファイルにリダイレクトするだけで、質問のコードのように出力ファイルを生成するためにawkにサブシェルを生成させる理由はありません。 awkを呼び出すときにシェルにこれを行うようにしてください。
awk -v RS= '/\n-/{print; exit}' sample.txt > output.txt
十分でない場合は、バージョンブロックをデフォルトのコメントから切り離すために必要なものに/\n-/
変更してください。/^## version/
NR > 1
/\n-/