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 |