aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Wittamore <philip@wittamore.com>2025-05-17 09:25:17 +0200
committerPhilip Wittamore <philip@wittamore.com>2025-05-17 09:25:17 +0200
commit35d37a79c1d4807b6b30f3bddae867ef16947f7a (patch)
treed340e5613d68acacb59caf2cf44797a09db0b890
parent07a2076c271a3d00b1e0bfdc213b239747f65a22 (diff)
downloadbashlib-35d37a79c1d4807b6b30f3bddae867ef16947f7a.tar.gz
bashlib-35d37a79c1d4807b6b30f3bddae867ef16947f7a.tar.bz2
bashlib-35d37a79c1d4807b6b30f3bddae867ef16947f7a.zip
update
-rw-r--r--README.md30
-rw-r--r--string_manipulation.html104
-rw-r--r--string_manipulation.md28
3 files changed, 30 insertions, 132 deletions
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. <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}` |
+
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
-
-<table>
- <tr>
- <th align="left" colspan="2">Assignment</th>
- </tr>
- <tr>
- <td>Assign <code>value</code> to <code>variable</code> if <code>variable</code> is not already set, <code>value</code> is returned.<br /><br />Combine with a <code>:</code> no-op to discard/ignore return <code>value</code>.</td>
- <td><code>${variable="value"}</code><br /><code>: ${variable="value"}</code></td>
- </tr>
- <tr>
- <th align="left" colspan="2">Removal</th>
- </tr>
- <tr>
- <td>Delete shortest match of <code>needle</code> from front of <code>haystack</code>.</td>
- <td><code>${haystack#needle}</code></td>
- </tr>
- <tr>
- <td>Delete longest match of <code>needle</code> from front of <code>haystack</code>.</td>
- <td><code>${haystack##needle}</code></td>
- </tr>
- <tr>
- <td>Delete shortest match of <code>needle</code> from back of <code>haystack</code>.</td>
- <td><code>${haystack%needle}</code></td>
- </tr>
- <tr>
- <td>Delete longest match of <code>needle</code> from back of <code>haystack</code>.</td>
- <td><code>${haystack%%needle}</code></td>
- </tr>
- <tr>
- <th align="left" colspan="2">Replacement</th>
- </tr>
- <tr>
- <td>Replace first match of <code>needle</code> with <code>replacement</code> from <code>haystack</code>.</td>
- <td><code>${haystack/needle/replacement}</code></td>
- </tr>
- <tr>
- <td>Replace all matches of <code>needle</code> with <code>replacement</code> from <code>haystack</code>.</td>
- <td><code>${haystack//needle/replacement}</code></td>
- </tr>
- <tr>
- <td>If <code>needle</code> matches front of <code>haystack</code> replace with <code>replacement</code>.</td>
- <td><code>${haystack/#needle/replacement}</code></td>
- </tr>
- <tr>
- <td>If <code>needle</code> matches back of <code>haystack</code> replace with <code>replacement</code>.</td>
- <td><code>${haystack/%needle/replacement}</code></td>
- </tr>
- <tr>
- <th align="left" colspan="2">Substitution</th>
- </tr>
- <tr>
- <td>If <code>variable</code> not set, return <code>value</code>, else <code>variable</code>.</td>
- <td><code>${variable-value}</code></td>
- </tr>
- <tr>
- <td>If <code>variable</code> not set <em>or</em> empty, return <code>value</code>, else <code>variable</code>.</td>
- <td><code>${variable:-value}</code></td>
- </tr>
- <tr>
- <td>If <code>variable</code> set, return <code>value</code>, else null string.</td>
- <td><code>${variable+value}</code></td>
- </tr>
- <tr>
- <td>If <code>variable</code> set <em>and</em> not empty, return <code>value</code>, else null string.</td>
- <td><code>${variable:+value}</code></td>
- </tr>
- <tr>
- <th align="left" colspan="2">Extraction</th>
- </tr>
- <tr>
- <td>Extract <code>length</code> characters from <code>variable</code> starting at <code>position</code>.</td>
- <td><code>${variable:position:length}</code></td>
- </tr>
- <tr>
- <td>Return string length of <code>variable</code>.</td>
- <td><code>${#variable}</code></td>
- </tr>
- <tr>
- <th align="left" colspan="2">Escaping</th>
- </tr>
- <tr>
- <td>Single quotes inside a single quoted string.</td>
- <td><code>echo 'Don'\''t break my escape!'</code></td>
- </tr>
- <tr>
- <th align="left" colspan="2">Indirection</th>
- </tr>
- <tr>
- <td>Return value of variable name held in <code>indirect</code>, else <code>value</code>.</td>
- <td><code>indirect="apple"</code><br /><code>apple="fruit"</code><br /><code>${!indirect-value}</code></td>
- </tr>
-</table>
-
-## 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. <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}` |
-