Strings can be handled efficiently using string functions in bash shell.
The following are the commonly used functions Finding length of the string
length: will return the length of the string
Eg:
str=”This is a test string”
len=`expr length “$str”`
echo $len
o/p:21
In bash shell, when you use a dollar sign followed by a variable name, shell expands the variable with its value. This feature of shell is called parameter expansion.
Parameter expansion has numerous other forms which allow you to expand a parameter and modify the value or substitute other values in the expansion process. We can use the parameter expansion concept for string manipulation operations.
Syntax:${#string}
Eg:
str="This is a test string"
len=${#str}
echo $len
Extracting a substring
substr
Eg: this will extract 3 characters from 2 pos ie; his
str="This is a test string"
sstr=`expr substr "$str" 2 3`
echo $sstr
In the parameter expansion position starts from 0.
Syntax:${string:position:length}
str="This is a test string"
sstr=${str:2:2}
echo $sstr
o/p:his
Deleting substring
Following syntax deletes the shortest match of $substring from front of $string
${string#substring}
Following syntax deletes the shortest match of $substring from back of $string
${string%substring}
Eg:
str="this is test"
echo ${str#*i} # will delete upto i from the begining
echo ${str%e*} # will delete upto e from the end
str="This is a test string"
sstr=`expr substr "$str" 2 3`
echo $sstr
In the parameter expansion position starts from 0.
Syntax:${string:position:length}
str="This is a test string"
sstr=${str:2:2}
echo $sstr
o/p:his
Deleting substring
Following syntax deletes the shortest match of $substring from front of $string
${string#substring}
Following syntax deletes the shortest match of $substring from back of $string
${string%substring}
Eg:
str="this is test"
echo ${str#*i} # will delete upto i from the begining
echo ${str%e*} # will delete upto e from the end
Following syntax deletes the longest match of $substring from front of $string
${string##substring}
Following syntax deletes the longest match of $substring from back of $string
${string%%substring}
Eg:
str="this is test"
echo ${str##*i}
echo ${str%%s*}
Find and replace string
Replace only first match
${string/pattern/replacement}
Eg:
str="this is test"
echo ${str/is/was}
Replace all the matches
${string//pattern/replacement}
Eg:
str="this is test"
echo ${str//is/was}
Replace in the beginning.Following syntax replaces with the replacement string, only when the pattern matches beginning of the $string.
${string/#pattern/replacement}
Following
syntax replaces with the replacement string, only when the pattern
matches at the end of the given $string.
${string/%pattern/replacement}
Sample Program:
Check the given string is palindrome or not
echo "enter the string...."
read str
len=${#str}
i=1
rstr=""
while [ $i -le $len ]
do
c=`expr substr "$str" $i 1`
rstr=$c$rst r
i=`expr $i + 1`
done
echo "reversed String is ...$rstr"
if [ "$str" = "$rstr" ]
then
echo "Palindrome"
else
echo "Not palindrome"
fi
Comments
Post a Comment