BASH Substring manipulation

Strip Last Character

Command Description
${string$?} Returns the string minus the final character

String Length

Command Description
${#string} Returns the length of the string

Substring Extractions

Command Description
${string:position}
${string:position:length}

Extracts substring from $string at $position. If the $string parameter is "*" or "@", then this extracts the positional parameters, starting at $position.

 

 

 

 

 

The last character of a string

string=hello
echo ${string: -1}
o

Substring Removal

Command Description
${string#substring}  Deletes shortest match of $substring from front of $string.
${string##substring}    Deletes longest match of $substring from front of $string.
${string%substring}  Deletes shortest match of $substring from back of $string.
${string%%substring}

Deletes longest match of $substring from back of $string.

Substring Replacement

Command Description
${string/substring/replacement}

Replace first  match of $substring with $replacement.

${string//substring/replacement} Replace all matches of $substring with $replacement.
${string/#substring/replacement} If $substring matches front end of $string, substitute $replacement for $substring.
${string/%substring/replacement} If $substring matches back end of $string, substitute $replacement for $substring.

 

 

 

 

 

 

 

BASH_REMATCH example

string=$( date +%T )

if [[ "$string" =~ ^([0-9][0-9]):([0-9][0-9]):([0-9][0-9])$ ]]; then
  printf 'Got %s, %s and %s\n' \
    "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}" "${BASH_REMATCH[3]}"
fi