我正在使用某种模式在Git中执行提交消息,以简化为新版本创建更改日志(https://stackoverflow.com/a/5151123/520162)。
应考虑到我的changelog的每一个变化得到前缀CHG
,NEW
或FIX
。
在生成变更日志时,我将使用以下命令为每个修订版打印要解析的修订版:
git show --quiet --date=short --pretty=format:"%cd %an %s%n%n%w(100,21,21)%b%n" $CURRENTREVISION
主题(%s
)包含修改的主题。
接下来,我使用SED修改生成的输出,以使其满足我的变更日志文件的需求。
现在,它发生在主题行中,有多次出现CHG
,NEW
或FIX
。我对该主题的输出如下所示:
DATE NAME FIX first change NEW second change CHG third change
我想我的前缀关键词的所有,但第一次出现以新行,使每个CHG
,NEW
或者FIX
开始一个新行:
DATE NAME FIX first change
NEW second change
CHG third change
为了达到这个目的,我必须告诉SED什么?
sed
这不是最合适的工具
用awk
它看起来像这样。
awk '{n=0; for (i=1; i<=NF; i++) {if ($i ~ /(NEW|FIX|CHG)/) {$i=(n++?"\n ":"")$i}}}7'
n=0
(重新)设置一个标志for (i=1; i<=NF; i++)
遍历该行的每个字段if ($i ~ /(NEW|FIX|CHG)/)
如果该字段是标记之一
$i=(n++?"\n ":"")$i
通过添加适当的前导空格(或不添加)来更新字段7
true -y模式以打印出当前行。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句