Every Linux shell provides tons of features to work with variables and strings. Sometimes you may need to extract substring from string in bash. In this article, we will look at how to do this using parameter expansion.
How to Extract Substring from String in Bash
Here is how to extract substring from string. You can use this in almost every Linux system as well as shell, not just bash.
Here is the syntax to extract substring from string.
substr= ${variable:offset:length}
In the above statement, we need to specify the variable containing string, the offset from where extraction must begin, and the length of substring to be extracted. Please note, the offset begins from 0 for 1st character of string, and not 1. Let us say you have the following string
string = "Today is beautiful"
Now let us look at some use cases for substring extraction.
Extract substring from string
To begin with, we will simply extract characters 3-6 using above parameter expansion.
$ string="Today is beautiful" $ echo ${string:2:3} day
Extract substring till specific character from start
Here is an example to extract first N characters of your string. In this case we extract first 3 characters.
$ string="Today is beautiful" $ echo ${string:0:2} To
Extract Last N characters of string
Here is an example to extract last N characters of your string. In this case we extract last 9 characters.
$ string="Today is beautiful" $ echo ${string:(-9)} beautiful
Extract from specific character onward
Here is an example to extract all characters from a specific position, for example, for 3rd character onwards.
$ string="Today is beautiful" $ echo ${string:6} is beautiful
In this article, we have learnt different ways to easily retrieve substring from another string. The key is to understand the syntax of parameter expansion for each use case and modify it according to your requirements.
Also read:
How to Split String into Array in Shell Script
How to Check if String Contains Substring in Bash
Shell Script to Remove Last N Characters from String
How to Find Unused IP Addresses in Network
How to Setup Email Alerts for Root Login
Related posts:
Shell Script to Read Data from Text File using For Loop
How to Add Newline After Pattern in Vim
How to Find All Sudo Users in Linux
How to Check if Port is Open or Closed in Linux
How to Loop Over Lines of File in Bash
How to Check Inode Usage in Linux
How to Install & Use Wine in Linux
How to Find All Symlinks to File/Directory

Sreeram has more than 10 years of experience in web development, Python, Linux, SQL and database programming.