Substring in Shell Script
Get Substring from a String
syntax
${string:position}
example
#!/bin/bash
string="abcgauravabcxyz"
echo "${string:0}" # output -> abcgauravabcxyz
echo "${string:1}" # bcgauravabcxyz
echo "${string:4}" # auravabcxyz
Get Last n Character from a String
#!/bin/bash
string="abcgauravabcxyz"
echo "${string: -3}" # xyz
Get Substring With Specific Length From String
#!/bin/bash
string="abcgauravabcxyz"
echo "${string:0:3}"
echo "${string:3:3}"
Get Shortest Match from Starting in A String
#!/bin/bash
string="abcgauravabcxyz"
echo "${string#a*c}" # from starting, shortest match
Get Longest Match from Starting in A String
#!/bin/bash
string="abcgauravabcxyz"
echo "${string##a*c}" # from starting, longest match
Get Shortest Match from the End
#!/bin/bash
string="abcgauravabcxyz"
echo ${string%b*z} # from ending, shortest match
Get Longest Match from the End
#!/bin/bash
string="abcgauravabcxyz"
echo "${string%%b*z}" # from ending, longest match
Replace First Occurrence of Character in String
#!/bin/bash
string="abcgauravabcxyz"
echo "${string/abc/xyz}"
Replace All Occurrence of Character in String
#!/bin/bash
string="abcgauravabcxyz"
echo "${string//abc/xyz}"
Remove First Occurrence of Character in String
#!/bin/bash
string="abcgauravabcxyz"
echo "${string/abc}"
Remove All Occurrence of Character in String
#!/bin/bash
string="abcgauravabcxyz"
echo "${string//abc}"
let's create a script and execute it.
#!/bin/bash
string="abcgauravabcxyz"
echo "${string:0}"
echo "${string:1}"
echo "${string:4}"
echo "${string:0:3}"
echo "${string:3:3}"
echo "${string: -5}"
echo "${string#a*c}" # from starting, shortest match
echo "${string##a*c}" # from starting, longest match
echo ${string%b*z} # from ending, shortest match
echo "${string%%b*z}" # from ending, longest match
string="abcgauravabcxyz"
echo "${string/abc/xyz}"
echo "${string//abc/xyz}"
echo "${string/abc}"
echo "${string//abc}"
output
┌──(gaurav㉿learning-ocean)-[~/shellscript-youtube] └─$ ./substring.sh abcgauravabcxyz bcgauravabcxyz auravabcxyz abc gau bcxyz gauravabcxyz xyz abcgaurava a xyzgauravabcxyz xyzgauravxyzxyz gauravabcxyz gauravxyz