Перейдите к системным настройкам и выберите значки (в разделе внешнего вида )и выберите любой значок.
Я попробовал grep, и он работал очень хорошо и довольно просто.
$(echo "feature/ABC-BranchName" | grep -Eo 'develop|release|((feature|bugfix|hotfix)/ABC-)([0-9]+)' |tr '/' '-');
Использованиеawk
(в зависимости от того, насколько мало вариаций может иметь ваша входная строка):
awk -F[_/] '{print $3}' <<<"$string"
Если вы хотите иметь возможность обрабатывать более сложные структуры каталогов, вы можете сначала использовать базовое имя
basename "$string" | awk -F_ '{print $1}'
Для сохранения в переменной используйте подстановку команд
variable=$(awk -F[_/] '{print $3}' <<<"$string")
string=/feature/abc-1245_branch_name
different_variable=${string%%_*}
different_variable=${different_variable##*/}
printf '%s\n' "$different_variable"
При этом используются стандартные замены параметров, чтобы сначала удалить бит после первого символа подчеркивания, а затем бит перед последней косой чертой.
${variable%%pattern}
удаляет самую длинную подстроку, соответствующую pattern
, из конца из $variable
. ${variable##pattern}
удаляет самую длинную подстроку, соответствующую pattern
, из начала строки $variable
. Если вы знаете, что такое _branch_name
на самом деле,
string=/feature/abc-1245_branch_name
different_variable=$( basename "$string" '_branch_name' )
printf '%s\n' "$different_variable"
Это обрабатывает строку как путь (, даже если это может быть не фактический путь ), и использует basename
для получения последнего компонента пути (, т. е. «имени файла» ). Утилита basename
также может удалить суффикс имени файла, поэтому мы используем ее для удаления известной строки _branch_name
.
И так как ни один ответ еще не основан на sed
и вы просили об этом;
$ string="/feature/abc-1245_branch_name"
$ sed -e 's/^.*\///; s/_.*$//' <<<"$string"
abc-1245
Использовать подстановку команд, поскольку @jesse _b предлагает поместить результат в переменную:
$ result=$(sed -e 's/^.*\///; s/_.*$//' <<<"$string")
$ echo $result
abc-1245
Однако, если ваша строка не становится намного более сложной для синтаксического анализа, а шаблоны синтаксического анализа/фильтрации меняются от строки к строке, я бы использовал чистое решение @kusalananda Bash. Он делает то же самое, что и я здесь с sed
, т. е. жадное сопоставление с образцом, но в этом простом случае чистый Bash, вероятно, является «естественным» выбором.