Skip to content

Bash String manipulation using parameter expansion

Includes pattern removal, substitution, and case conversion.

Operation Description Example Result
${var#Pattern} Remove shortest match of Pattern from the beginning of $var. var='src_main.c'
echo ${var#*_}
main.c
${var##Pattern} Remove longest match of Pattern from the beginning of $var. var='src_inner_main.c'
echo ${var##*_}
main.c
${var%Pattern} Remove shortest match of Pattern from the end of $var. var='src_main.c'
echo ${var%.*}
src_main
${var%%Pattern} Remove longest match of Pattern from the end of $var. var='src.main.backup.tar'
echo ${var%%.*}
src
${var/Pattern/Replacement} Replace first match of Pattern with Replacement. var='src_main.c'
echo ${var/_main/_test}
src_test.c
${var//Pattern/Replacement} Replace all matches of Pattern with Replacement. var='src_main_main.c'
echo ${var//_main/_test}
src_test_test.c
${var/#Pattern/Replacement} If Pattern matches the beginning of $var, replace it with Replacement. var='src_main.c'
echo ${var/#src/src_code}
src_code_main.c
${var/%Pattern/Replacement} If Pattern matches the end of $var, replace it with Replacement. var='src_main.c'
echo ${var/%.c/.h}
src_main.h
${var:Position} Extract substring from $var starting at Position. var='src_main.c'
echo ${var:4}
main.c
${var:Position:Length} Extract Length characters of substring from $var starting at Position. var='src_main.c'
echo ${var:4:4}
main
${#var} Length of $var. var='src_main.c'
echo ${#var}
9
${var^} Convert first character of $var to uppercase. var='src_main.c'
echo ${var^}
Src_main.c
${var^^} Convert all characters of $var to uppercase. var='src_main.c'
echo ${var^^}
SRC_MAIN.C
${var,} Convert first character of $var to lowercase. var='SRC_MAIN.C'
echo ${var,}
sRC_MAIN.C
${var,,} Convert all characters of $var to lowercase. var='SRC_MAIN.C'
echo ${var,,}
src_main.c
${v::-4} Remove last 4 chars from var var='src_main.c.bak'
echo $var::-4
src_main.c