使用 bash 读取文件直到更改日志文件中的正则表达式
Read file until regex in changelog file using bash
我想获取文件中的内容,直到在内容中找到正则表达式。我需要这个来报告我最后的更新日志
示例:
## <small>0.27.3 (2019-03-18)</small>
* Fix integration tests
* Change log message
## <small>0.27.2 (2019-03-18)</small>
* Change find to filter
* Fix bug in typo
* Format message in request
我想要一个正则表达式 return 只有我最新版本的内容。示例:
## <small>0.27.3 (2019-03-18)</small>
* Fix integration tests
* Change log message
如何使用 sed、grep 或 awk 来实现?
谢谢你
编辑:
我能做到:
CHANGELOG_MESSAGE=$(head -n 1 CHANGELOG.md)$(head -n 20 CHANGELOG.md | tail -n 19 | sed '/##/q' | awk '!/##/')
我认为这个解决方案有点复杂,但有效
试试这个:
sed '1p;1,/^##/!d;/##/d' CHANGELOG.md
说明
1p # print first line
;
1,/^##/!d # delete everything after second ##-line
;
/##/d # delete all lines start with ##
输出
## <small>0.27.3 (2019-03-18)</small>
* Fix integration tests
* Change log message
我想获取文件中的内容,直到在内容中找到正则表达式。我需要这个来报告我最后的更新日志
示例:
## <small>0.27.3 (2019-03-18)</small>
* Fix integration tests
* Change log message
## <small>0.27.2 (2019-03-18)</small>
* Change find to filter
* Fix bug in typo
* Format message in request
我想要一个正则表达式 return 只有我最新版本的内容。示例:
## <small>0.27.3 (2019-03-18)</small>
* Fix integration tests
* Change log message
如何使用 sed、grep 或 awk 来实现?
谢谢你
编辑:
我能做到:
CHANGELOG_MESSAGE=$(head -n 1 CHANGELOG.md)$(head -n 20 CHANGELOG.md | tail -n 19 | sed '/##/q' | awk '!/##/')
我认为这个解决方案有点复杂,但有效
试试这个:
sed '1p;1,/^##/!d;/##/d' CHANGELOG.md
说明
1p # print first line
;
1,/^##/!d # delete everything after second ##-line
;
/##/d # delete all lines start with ##
输出
## <small>0.27.3 (2019-03-18)</small>
* Fix integration tests
* Change log message