Git awk特殊印刷
我想用awk打印我的git分支,我只需要分支名称,不需要来源,也不知道我的工作副本是什么。 我提出了Git awk特殊印刷,git,bash,awk,Git,Bash,Awk,我想用awk打印我的git分支,我只需要分支名称,不需要来源,也不知道我的工作副本是什么。 我提出了git branch-r | awk-F'{print$1}',但结果如下所示: origin/Dev origin/HEAD origin/master Dev,HEAD,master 所以我尝试了git branch-r | awk-F'/''{print$2}',结果是: Dev HEAD -> origin master 我怎样才能只保留分支机构的名称? (我不关心“git”解
git branch-r | awk-F'{print$1}'
,但结果如下所示:
origin/Dev
origin/HEAD
origin/master
Dev,HEAD,master
所以我尝试了git branch-r | awk-F'/''{print$2}'
,结果是:
Dev
HEAD -> origin
master
origin/Dev
origin/HEAD
origin/master
Dev,HEAD,master
... | awk -F' +|/' -v ORS=, '{if($3!="HEAD") print $3}'
awk -v OFS="," '{ n = split($1, a, /\//); branches[++b] = a[n] }
END { for (i = 1; i <= b; ++i) printf "%s%s", branches[i], (i<b?OFS:ORS) }'
awk-vofs=“,”{n=split($1,a,/\/);分支[++b]=a[n]}
END{for(i=1;i这应该做到:
awk -v OFS="," '{ n = split($1, a, /\//); branches[++b] = a[n] }
END { for (i = 1; i <= b; ++i) printf "%s%s", branches[i], (i<b?OFS:ORS) }'
awk-vofs=“,”{n=split($1,a,/\/);分支[++b]=a[n]}
结束{for(i=1;i
我应该这样做
输出
Dev
HEAD
master
我应该这样做
输出
Dev
HEAD
master
这将打印出所需的结果,即逗号分隔的字符串
git branch -r | awk '
BEGIN { firstBranch = 1 }
# split branch off from remote
{ branch = substr($1, index($1, "/") + 1) }
# eliminate HEAD reference
branch == "HEAD" { next }
# output comma between branches
!firstBranch { printf "," }
firstBranch { firstBranch = 0 }
# output branch name
{ printf branch }
# final linebreak
END { print "" }
'
或作为一行没有评论
git branch -r | awk 'BEGIN { firstBranch = 1 } { branch = substr($1, index($1, "/") + 1) } branch == "HEAD" { next } !firstBranch { printf "," } firstBranch { firstBranch = 0 } { printf branch } END { print "" }'
这将打印出所需的结果,即逗号分隔的字符串
git branch -r | awk '
BEGIN { firstBranch = 1 }
# split branch off from remote
{ branch = substr($1, index($1, "/") + 1) }
# eliminate HEAD reference
branch == "HEAD" { next }
# output comma between branches
!firstBranch { printf "," }
firstBranch { firstBranch = 0 }
# output branch name
{ printf branch }
# final linebreak
END { print "" }
'
或作为一行没有评论
git branch -r | awk 'BEGIN { firstBranch = 1 } { branch = substr($1, index($1, "/") + 1) } branch == "HEAD" { next } !firstBranch { printf "," } firstBranch { firstBranch = 0 } { printf branch } END { print "" }'
以下是我的例子:
git branch|awk '{print ($1=="*" ? $2 : $1)}'|awk 'ORS=NR?",":"\n"'
git分支
-打印分支,
awk'{print($1==“*”?$2:$1)}
-在当前分支之前打印名称,而不是*
,
awk'ORS=NR?”,“:“\n”
-将\n
替换为,
我的结果是:
ZIIPR-1247,ZIIPR-Config,develop,master,stage
希望这是最简单的例子…这里是我的例子:
git branch|awk '{print ($1=="*" ? $2 : $1)}'|awk 'ORS=NR?",":"\n"'
git分支
-打印分支,
awk'{print($1==“*”?$2:$1)}
-在当前分支之前打印名称,而不是*
,
awk'ORS=NR?”,“:“\n”
-将\n
替换为,
我的结果是:
ZIIPR-1247,ZIIPR-Config,develop,master,stage
希望这是最简单的例子…那么git branch-r|awk'{n=split($1,a,“/”);print a[n]}“
?@fedorqui隐含的假设是,本地分支与远程分支具有相同的名称。请指出您的git分支-r
的输出是什么,以及基于它您想要的输出是什么?输出是:origin/Dev origin/HEAD->origin/master origin/master我想要:Dev,HEAD,master你的问题包括在内将git branch-r
(您当前的尝试没有进行后期处理)的输出进行转换,这样我们就可以帮助您编写一个工具来解析该输出。那么git branch-r | awk'{n=split($1,a,“/”);打印一个[n]}呢“
?@fedorqui隐含的假设是,本地分支与远程分支具有相同的名称。请指出您的git分支-r
的输出是什么,以及基于它您想要的输出是什么?输出是:origin/Dev origin/HEAD->origin/master origin/master我想要:Dev,HEAD,master你的问题包括在内egit branch-r
的输出(当前尝试未进行后期处理)因此,我们可以帮助您编写一个工具来解析该输出。最优雅的输出。此解决方案有两个主要缺点。1.它在字符串末尾额外输出一个逗号。2.它不能正确处理名称中带有斜杠的分支。如果您有branchoriginal/foo/bar
和branchoriginal/foo/baz
,它将输出two次foo
而不是正确的foo/bar
和foo/baz
。我的解决方案没有这些缺陷,尽管它当然有点长。最优雅的输出。此解决方案有两个主要缺点。1.它在字符串末尾额外输出一个逗号。2.它不处理带有斜杠的分支我是正确的。如果您有branchoriginal/foo/bar
和branchoriginal/foo/baz
,它将输出两次foo
,而不是正确的foo/bar
和foo/baz
。我的解决方案没有这些缺陷,尽管它当然要长一点。