Ubuntu – replace a string by variable in a file using bash script

command linescriptstext processing

through bash script, I am trying to find a value-number- from a text in a file, then make a new variable then replace it with a string in that file
for example. in a file in /root/test.txt , i have a string web1
i need to cut the number "1", and increase it by 1 so it will be 2
then replace web1 by web2
that is what i did so far
any idea how to make it works ?

#!/bin/bash
m=grep 'web' /root/test.txt | awk '{print $2}'
i= $m | cut -c3
i=i+1
n='web$i'
$ sed -i 's/$m/$n/g' /root/test.txt

Sample input:

 project web0

Sample output:

 project web1

Best Answer

AWK can search and replace text as well, so there is no need to use grep or sed. The code bellow extracts substring from second column (webN), increments N, and substitutes second field with webN+1

$ cat testInput.txt                                                                                          
project web0
other
project web1
$ awk '/web/{ num=substr($2,4)+1;$2="web"num };1' testInput.txt                                              
project web1
other
project web2

This will print edited file on screen. You can save that to another file like so awk [rest of code here] > fileName.txt and replace original with new using mv fileName.txt oldFile.txt

Related Question