Git awk特殊印刷

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”解

我想用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”解决方案,我想知道如何使用awk实现这一点)
  • 如何在同一行中用逗号替换换行符?例如,我的目标是这样看:

    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你的问题包括在内e
    git branch-r
    的输出(当前尝试未进行后期处理)因此,我们可以帮助您编写一个工具来解析该输出。最优雅的输出。此解决方案有两个主要缺点。1.它在字符串末尾额外输出一个逗号。2.它不能正确处理名称中带有斜杠的分支。如果您有branch
    original/foo/bar
    和branch
    original/foo/baz
    ,它将输出two次
    foo
    而不是正确的
    foo/bar
    foo/baz
    。我的解决方案没有这些缺陷,尽管它当然有点长。最优雅的输出。此解决方案有两个主要缺点。1.它在字符串末尾额外输出一个逗号。2.它不处理带有斜杠的分支我是正确的。如果您有branch
    original/foo/bar
    和branch
    original/foo/baz
    ,它将输出两次
    foo
    ,而不是正确的
    foo/bar
    foo/baz
    。我的解决方案没有这些缺陷,尽管它当然要长一点。