CHANGELOG.md
欲しいファイルがあるとしましょう。入れる4行のコマンド出力ですgenerate-changelog
。次のシェルコマンドを使用してこれを達成するにはどうすればよいですかsed
?
変更するファイル
$ cat CHANGELOG.md
# Change Log
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
# 3.0.0
…
私の注文
$ generate-changelog
# 3.0.1
- fixed some bug
- lots and lots
- of multiline
- output
私が得たい結果(stdoutではなくCHANGELOG.md
直接)
# Change Log
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
# 3.0.1
- fixed some bug
- lots and lots
- of multiline
- output
# 3.0.0
…
デフォルトでは、標準入力に基づいてこの静的コマンドを生成する必要があります。入れる4行のコマンドで提供される任意のコンテンツ:
sed -i "4a\
## [$newTag](https://github.com/$(repo_path)/compare/$(latest_tag)...$newTag) - $(today)" CHANGELOG.md
答え1
少なくともGNU sedを使用すると、特別なr
ファイル名を持つコマンドを使用して/dev/stdin
標準入力の内容を読み取り、ループの末尾に挿入するためにキューに入れることができます(forファイルとr
少し似ています)。a
したがって、generate-changelog
stdoutに書き込むと仮定すると、試してみることができます。
generate-changelog | sed -i '4r/dev/stdin' CHANGELOG.md