如何使用 bash 從字串中提取分支名稱?例如,我有以下命令:
branch=$(git branch -a --contains $sha)
這可能會回傳:
* branch-1.0(前綴總是一個星號)branch-2.0 remotes/origin/branch-2.0(這里可能是一個新行而不是一個空格)master remotes/origin/master(這里可能是一個新行而不是一個空格)
而且我只需要分支名稱(并且只需要一次) - master,branch-2.0或branch-1.0. 我知道它可以用sed命令來完成,但我不知道怎么做。
我使用以下正則運算式: (branch-[0-9].[0-9])|(master)
uj5u.com熱心網友回復:
這是如何在 Bash 中完成的,而不使用外部正則運算式決議器:
# Read reference name path in an array splitting entries by /
IFS=/ read -ra refname < <(
# Obtain full branch reference path that contains this sha
git branch --format='%(refname)' --contains="$sha"
)
# Branch name is the last array element
branchname="${refname[-1]}"
printf 'The git branch name for sha: %s\nis: %s\n' "$sha" "$branchname"
或者僅使用 POSIX-shell 語法:
# Read reference path
refname=$(
# Obtain full branch reference path that contains this sha
git branch --format='%(refname)' --contains="$sha"
)
# Trim-out all leading path to get only the branch name
branchname="${refname##*/}"
printf 'The git branch name for sha: %s\nis: %s\n' "$sha" "$branchname"
uj5u.com熱心網友回復:
使用 sed
$ branch=$(git branch -a --contains $sha | sed 's#.*/\|[^a-z]*##')
使用 awk
$ branch=$(git branch -a --contains $sha | awk -F/ '{gsub("* ","");print $NF}')
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/369238.html
標籤:正则表达式 猛击 sed Unix 文本处理 文字捕捉
上一篇:如何剪輯影像以洗掉其填充
下一篇:帶有創建日期的水印png影像
