AWK不能正确标记输入作为git别名的一部分

时间:2018-08-23 15:37:36

标签: bash git awk

我正在尝试添加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.

1 个答案:

答案 0 :(得分:1)

无法测试您的问题,但是我认为这是由于您没有在awk中转义$,所以您最终进行了简单打印,默认情况下会打印所有内容。

尝试:

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