Bash String Manipulation
Take your programming skills to the next level with interactive lessons and real-world projects.
Explore Coddy →String manipulation is a crucial skill for Bash scripting. It allows you to process and modify text data efficiently. In this guide, we'll explore various techniques for working with strings in Bash.
Basic String Operations
String Length
To find the length of a string, use the ${#string} syntax:
string="Hello, World!"
echo ${#string} # Output: 13
Concatenation
Bash allows simple string concatenation by placing variables or strings next to each other:
greeting="Hello"
name="Alice"
result="${greeting}, ${name}!"
echo $result # Output: Hello, Alice!
Substring Extraction
Bash provides powerful substring extraction capabilities using parameter expansion.
Extract from Beginning
Use ${string:start:length} to extract a substring:
text="The quick brown fox"
echo ${text:0:3} # Output: The
echo ${text:4:5} # Output: quick
Extract from End
Use negative indices to extract from the end of the string:
echo ${text: -3} # Output: fox
echo ${text: -8:5} # Output: brown
String Replacement
Bash offers various ways to replace parts of a string.
Simple Replacement
Use ${string/pattern/replacement} for single replacement:
sentence="The cat sat on the mat"
echo ${sentence/cat/dog} # Output: The dog sat on the mat
Global Replacement
Use ${string//pattern/replacement} for global replacement:
echo ${sentence//the/a} # Output: a cat sat on a mat
Case Modification
Bash provides built-in case modification operations:
${string^^}: Convert to uppercase${string,,}: Convert to lowercase
mixed="MiXeD CaSe"
echo ${mixed^^} # Output: MIXED CASE
echo ${mixed,,} # Output: mixed case
String Trimming
Remove characters from the beginning or end of a string:
${string#pattern}: Remove shortest match from beginning${string##pattern}: Remove longest match from beginning${string%pattern}: Remove shortest match from end${string%%pattern}: Remove longest match from end
path="/home/user/documents/file.txt"
echo ${path##*/} # Output: file.txt
echo ${path%/*} # Output: /home/user/documents
Best Practices
- Always quote your variables to prevent word splitting and globbing
- Use parameter expansion for string manipulation when possible, as it's faster than external commands
- For complex string operations, consider using Bash sed Command or Bash awk Command
Mastering string manipulation in Bash enhances your scripting capabilities. It's essential for tasks like parsing command output, processing text files, and building dynamic strings. As you become more comfortable with these techniques, you'll find yourself writing more efficient and powerful Bash scripts.
For more advanced string processing, you might want to explore Bash Regular Expressions, which provide even more powerful pattern matching and manipulation capabilities.