Bash:
Extracting substrings
How to:
Here’s the lowdown on substring extraction in Bash:
# Using ${string:start:length}
text="The quick brown fox"
substring=${text:4:5}
echo $substring # Outputs 'quick'
# Default length is rest of the string
substring=${text:16}
echo $substring # Outputs 'fox'
# Negative start index (from the end of the string)
substring=${text: -3}
echo $substring # Outputs 'fox'
Deep Dive
Bash has handled strings since way back. Extracting substrings is an old-school trick, but still super handy. Before fancy tools, we just had parameter expansion – the ${}
syntax – and it’s stood the test of time.
Alternatives? Sure. awk
, cut
, and grep
can all slice and dice strings in their own way. But for a quick, no-extra-spawn job, Bash’s built-in method is efficient.
Implementation-wise, Bash grabs substrings without fuss. It doesn’t care what’s inside your string: text, numbers, unicorn emojis – whatever. Just give it the start and end, and it’ll blindly snip that piece out.
See Also
Dive deeper and check out these links:
- Bash’s manual on parameter expansion:
man bash
and search for Parameter Expansion awk
andgrep
deep dives: Awk Tutorial and Grep Manual- A broader look at string manipulation in Bash: Bash String Manipulation Guide