I have a string which comes from a variable I want to increment it. how can i do that using shell script?
this is my input which comes from a variable:
abc-ananya-01
output should be:
abc-ananya-02
I have a string which comes from a variable I want to increment it. how can i do that using shell script?
this is my input which comes from a variable:
abc-ananya-01
output should be:
abc-ananya-02
It is shorter:
a=abc-lhg-08
echo ${a%-*}-`printf "%02d" $((10#${a##*-}+1))`
abc-lhg-09
Even better:
a=abc-lhg-08
printf "%s-%02d\n" ${a%-*} $((10#${a##*-}+1))
abc-lhg-09
check this:
kent$ echo "abc-ananya-07"|awk -F'-' -v OFS='-' '{$3=sprintf("%02d",++$3)}7'
abc-ananya-08
The above codes do the increment and keep your number format.
With pure Bash it is a bit long:
IFS="-" read -r -a arr <<< "abc-ananya-01"
last=10#${arr[${#arr}-1]} # to prevent getting 08, when Bash
# understands it is a number in base 8
last=$(( last + 1 ))
arr[${#arr}-1]=$(printf "%02d" $last)
( IFS="-"; echo "${arr[*]}" )
This reads into an array, increments the last element and prints it back.
It returns:
abc-ananya-02
Bash string manipulations can be used here.
a='abc-ananya-07'
let last=$(echo ${a##*-}+1)
echo ${a%-*}-$(printf "%02d" $last)