I recently was working on assembling two Git repositories i.e. a core and a view in an automated build system which seemed to be unsupported when using Jenkins freestyle mode. The solution is to use a more flexible approach using Jenkins pipeline job but I found myself in a situation where I have to extract a word from a Git URL using shell script.

It's been a while since I last touched Perl or regular expressions so it's sort of a struggle. Surprisingly, I can't find a straight forward answer in the Internet and I have to build my own.

To be precise I have to extract the Git repository name from the following Git URL:

git@bitbucket.org:project/repo-name.git


My chosen solution was to use sed and goes as follows:

export GIT=git@bitbucket.org:project/repo-name.git
echo $GIT | sed 's/^.*\/$$.*$$\.git$/\1/'


Running this script should extract the word repo-name.

The important part of the script is:

s/^.*(word-to-capture).*$/\1/  Using regular expressions, just insert some patterns between the left anchor ^ and right anchor $. In my case it's the word between the / and .git and put the word you want to capture inside the parenthesis.

And nope I won't go explaining this script in more detail since this is not a comprehensive sed, regular expression or shell script tutorial. In case you need a fast and reliable way to extract a word from a URL or a phrase using shell script I'm already glad to have help somebody step in the right direction.