首页 > 解决方案 > AWK 没有正确地将输入标记为 git 别名的一部分

问题描述

我正在尝试添加一个 git 别名来提示我删除所有本地 git 分支。我已经走了很远,我已经达到了以下几点:

pdb = "! sh -c 'git branch -vv | grep -v \"origin/.*\" | awk \"{print $1}\" | xargs -L1 -I{} -p git branch -D {}' -"

第一部分将列出所有具有详细输出的分支,以便在通过管道传输到 时grep,我们可以使用远程对应项过滤掉分支。awk然后应该获取该输出的第一部分,即分支名称,并将其发送到xargs命令。我遇到的麻烦awk是将整个详细输出传递给xargs.

这个答案让我更接近了一点,但我仍然没有从awk https://stackoverflow.com/a/25954749/3356508获得预期的输出

$ git pdb
git branch -D master-test1 9837ec0f0 test commit 1 ?...y
error: branch 'master-test1 9837ec0f0 test commit 1' not found.
git branch -D master-test2 2810823bc test commit 2 ?...y
error: branch 'master-test2 2810823bc test commit 2' not found.

标签: bashgitawk

解决方案


无法测试您的问题,但我认为这是因为您没有逃避$in awk,因此您最终会进行简单的打印,默认情况下会打印所有内容。

尝试:

pdb = "! sh -c 'git branch -vv | grep -v \"origin/.*\" | awk \"{print \\$1}\" | xargs -L1 -I{} -p git branch -D {}' -"

推荐阅读