Bash 如何在git--msg过滤器中使用awk

Bash 如何在git--msg过滤器中使用awk,bash,awk,git-rewrite-history,Bash,Awk,Git Rewrite History,我正在努力清理一些git历史记录。例如,修剪我的提交消息中的所有行。我需要能够做一些事情,比如: git filter-branch -f --msg-filter 'cat | awk '{$1=$1;print}'' HEAD 当然,由于我对撇号的错误使用,这将失败 如果我试图逃脱,或者使用双撇号,这都是行不通的 作为我需要处理的一个例子: Add cool service to application Related: ISSUE-3 这是在提交结束时追加相关问题标识符并将其

我正在努力清理一些git历史记录。例如,修剪我的提交消息中的所有行。我需要能够做一些事情,比如:

git filter-branch -f --msg-filter 'cat | awk '{$1=$1;print}'' HEAD
当然,由于我对撇号的错误使用,这将失败

如果我试图逃脱,或者使用双撇号,这都是行不通的

作为我需要处理的一个例子:

    Add cool service to application

Related: ISSUE-3
这是在提交结束时追加相关问题标识符并将其从我的摘要行中删除的结果,请注意提交摘要结尾处的空格。我想用awk修剪的主要是那些提交摘要

有谁能帮我掌握有限的bash技能吗


在以下命令中提前感谢

git filter-branch -f --msg-filter 'cat | awk '{$1=$1;print}'' HEAD
最里面的单引号之间的表达式不会转义,$1替换为value

git filter-branch -f --msg-filter 'cat | awk '\''{$1=$1;print}'\' HEAD
可能是有效的。还可以尝试在行首添加echo命令

echo git filter-branch -f --msg-filter 'cat | awk '{$1=$1;print}'' HEAD
echo git filter-branch -f --msg-filter 'cat | awk '\''{$1=$1;print}'\' HEAD
或添加
printf“'%s'\n”


向我们展示一个输入,并告诉我们您希望避免使用哪一行?我已重新编辑以展示@Inian的示例。谢谢您的邮件后面的两行是否总是需要删除?在“向应用程序添加酷服务”之前和之后的空格。修剪那一行的空格。
printf "'%s'\n" git filter-branch -f --msg-filter 'cat | awk '\''{$1=$1;print}'\' HEAD