Skip to content

Instantly share code, notes, and snippets.

@Wasapl
Forked from magnetikonline/README.md
Last active November 23, 2017 11:57
Show Gist options
  • Save Wasapl/adfa376676bdf5f82cd3945cf39301ea to your computer and use it in GitHub Desktop.
Save Wasapl/adfa376676bdf5f82cd3945cf39301ea to your computer and use it in GitHub Desktop.
Bash string manipulation cheatsheet.

Bash string manipulation cheatsheet

Removal
Delete shortest match of needle from front of haystack ${haystack#needle}
Delete longest match of needle from front of haystack ${haystack##needle}
Delete shortest match of needle from back of haystack ${haystack%needle}
Delete longest match of needle from back of haystack ${haystack%%needle}
Replacement
Replace first match of needle with replacement from haystack ${haystack/needle/replacement}
Replace all matches of needle with replacement from haystack ${haystack//needle/replacement}
If needle matches front of haystack replace with replacement ${haystack/#needle/replacement}
If needle matches back of haystack replace with replacement ${haystack/%needle/replacement}
Substitution
If variable not set, return value, else variable ${variable-value} ${variable=value}
If variable not set or empty, return value, else variable ${variable:-value} ${variable:=value}
If variable set, return value, else null string ${variable+value}
If variable set and not empty, return value, else null string ${variable:+value}
If variable set, use it, else print err_msg and exit 1 ${variable?err_msg}
If variable set and not empty, use it, else print err_msg and exit 1 ${variable:?err_msg}
Extraction
Extract length characters from variable starting at position ${variable:position:length}
Extract substring characters from variable starting at position ending at the end of string ${variable:position}
String length of variable ${#variable}
Replacement
First match of Pattern, within var replaced with Replacement. ${var/Pattern/Replacement}
All matches of Pattern, within var replaced with Replacement. ${var//Pattern/Replacement}
If prefix of var matches Pattern, then substitute Replacement for Pattern. ${var/#Pattern/Replacement}
If suffix of var matches Pattern, then substitute Replacement for Pattern. ${var/%Pattern/Replacement}
Indirect reference
Matches names of all previously declared variables beginning with varprefix. ${!varprefix*} ${!varprefix@}

Reference

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment