aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Wittamore <philip@wittamore.com>2025-05-17 09:22:36 +0200
committerPhilip Wittamore <philip@wittamore.com>2025-05-17 09:22:36 +0200
commit07a2076c271a3d00b1e0bfdc213b239747f65a22 (patch)
tree677a57eb6c9056f67bbf6843c92b4a4f5144bffc
parent0aa797f758ad108911c21586a9a4e5a69c80c4a4 (diff)
downloadbashlib-07a2076c271a3d00b1e0bfdc213b239747f65a22.tar.gz
bashlib-07a2076c271a3d00b1e0bfdc213b239747f65a22.tar.bz2
bashlib-07a2076c271a3d00b1e0bfdc213b239747f65a22.zip
update
-rw-r--r--string_manipulation.md28
1 files changed, 28 insertions, 0 deletions
diff --git a/string_manipulation.md b/string_manipulation.md
new file mode 100644
index 0000000..b3e15ab
--- /dev/null
+++ b/string_manipulation.md
@@ -0,0 +1,28 @@
+\# Bash string manipulation cheatsheet # https://gist.github.com/magnetikonline/90d6fe30fc247ef110a1
+
+| Assignment | |
+| --- | --- |
+| Assign `value` to `variable` if `variable` is not already set, `value` is returned. <br> <br>Combine with a `:` no-op to discard/ignore return `value`. | `${variable="value"}` <br>`: ${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"` <br>`apple="fruit"` <br>`${!indirect-value}` |
+