From 35d37a79c1d4807b6b30f3bddae867ef16947f7a Mon Sep 17 00:00:00 2001 From: Philip Wittamore Date: Sat, 17 May 2025 09:25:17 +0200 Subject: update --- README.md | 30 ++++++++++++++ string_manipulation.html | 104 ----------------------------------------------- string_manipulation.md | 28 ------------- 3 files changed, 30 insertions(+), 132 deletions(-) delete mode 100644 string_manipulation.html delete mode 100644 string_manipulation.md diff --git a/README.md b/README.md index 4afebe0..ab01731 100644 --- a/README.md +++ b/README.md @@ -4,3 +4,33 @@ pb_fg 0-254 set foreground colour pb_bg 0-254 set background colour pb_nc remove coulours + +## Bash string manipulation cheatsheet +### https://gist.github.com/magnetikonline/90d6fe30fc247ef110a1 + +| Assignment | | +| --- | --- | +| Assign `value` to `variable` if `variable` is not already set, `value` is returned.

Combine with a `:` no-op to discard/ignore return `value`. | `${variable="value"}`
`: ${variable="value"}` | +| 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}` | +| If `variable` not set _or_ empty, return `value`, else `variable`. | `${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}` | +| Extraction | | +| Extract `length` characters from `variable` starting at `position`. | `${variable:position:length}` | +| Return string length of `variable`. | `${#variable}` | +| Escaping | | +| Single quotes inside a single quoted string. | `echo 'Don'\''t break my escape!'` | +| Indirection | | +| Return value of variable name held in `indirect`, else `value`. | `indirect="apple"`
`apple="fruit"`
`${!indirect-value}` | + diff --git a/string_manipulation.html b/string_manipulation.html deleted file mode 100644 index ca7b3ed..0000000 --- a/string_manipulation.html +++ /dev/null @@ -1,104 +0,0 @@ -# Bash string manipulation cheatsheet -# https://gist.github.com/magnetikonline/90d6fe30fc247ef110a1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Assignment
Assign value to variable if variable is not already set, value is returned.

Combine with a : no-op to discard/ignore return value.
${variable="value"}
: ${variable="value"}
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}
If variable not set or empty, return value, else variable.${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}
Extraction
Extract length characters from variable starting at position.${variable:position:length}
Return string length of variable.${#variable}
Escaping
Single quotes inside a single quoted string.echo 'Don'\''t break my escape!'
Indirection
Return value of variable name held in indirect, else value.indirect="apple"
apple="fruit"
${!indirect-value}
- -## Reference - -- https://tldp.org/LDP/abs/html/string-manipulation.html -- https://tldp.org/LDP/abs/html/parameter-substitution.html -- https://tldp.org/LDP/abs/html/ivr.html -- Special characters: - - `*`: https://www.tldp.org/LDP/abs/html/special-chars.html#ASTERISKREF - - `?`: https://www.tldp.org/LDP/abs/html/special-chars.html#WILDCARDQU -- https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02 diff --git a/string_manipulation.md b/string_manipulation.md deleted file mode 100644 index b3e15ab..0000000 --- a/string_manipulation.md +++ /dev/null @@ -1,28 +0,0 @@ -\# Bash string manipulation cheatsheet # https://gist.github.com/magnetikonline/90d6fe30fc247ef110a1 - -| Assignment | | -| --- | --- | -| Assign `value` to `variable` if `variable` is not already set, `value` is returned.

Combine with a `:` no-op to discard/ignore return `value`. | `${variable="value"}`
`: ${variable="value"}` | -| 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}` | -| If `variable` not set _or_ empty, return `value`, else `variable`. | `${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}` | -| Extraction | | -| Extract `length` characters from `variable` starting at `position`. | `${variable:position:length}` | -| Return string length of `variable`. | `${#variable}` | -| Escaping | | -| Single quotes inside a single quoted string. | `echo 'Don'\''t break my escape!'` | -| Indirection | | -| Return value of variable name held in `indirect`, else `value`. | `indirect="apple"`
`apple="fruit"`
`${!indirect-value}` | - -- cgit v1.2.3