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