我想用awk打印我的git分支,我只想要分支名称,没有原点而不知道我的工作副本是什么。
我提出了git branch -r | awk -F' ' '{print $1}'
,但结果如下:
origin/Dev
origin/HEAD
origin/master
所以我尝试了git branch -r | awk -F'/' '{print $2}'
,结果是:
Dev
HEAD -> origin
master
如何在同一行中用逗号替换换行符?例如,我的目标是看到这样:
Dev,HEAD,master
感谢。
答案 0 :(得分:1)
... | awk -F' +|/' -v ORS=, '{if($3!="HEAD") print $3}'
答案 1 :(得分:1)
这将打印出所需的结果,逗号分隔的字符串
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 "" }'
答案 2 :(得分:0)
应该这样做:
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) }'
这将获取每个本地分支的最后一部分(它假定您的本地分支在其名称中没有/
)。它将每个名称存储在一个数组中,然后将它们打印出来,用逗号分隔(使用OFS
),后跟换行符(使用ORS
)。
在将分支添加到数组之前添加条件if (a[n] != "HEAD")
会很容易。
答案 3 :(得分:0)
git branch -r | awk -F/ '{sub(/[[:space:]]*->.*$/,"")}{print $NF}'
应该这样做。
<强>输出强>
Dev
HEAD
master
答案 4 :(得分:0)
这是我的例子:
git branch|awk '{print ($1=="*" ? $2 : $1)}'|awk 'ORS=NR?",":"\n"'
git branch
- 打印分支,
awk '{print ($1=="*" ? $2 : $1)}'
- 在当前分支之前打印名称,而不是*
,
awk 'ORS=NR?",":"\n"'
- 将\n
替换为,
。
我的结果是:
ZIIPR-1247,ZIIPR-Config,develop,master,stage
希望这是最简单的例子......