简体   繁体   中英

Shell script to replace string dynamically

I am writing a shell script for linux which takes argument as port no. inside file following is a line which needs to be updated:

define('NO_OF_PORTS',10);

I need to replace that 10 by the argument passed. But this should be dynamic, like next time I pass new port no it must get updated.

Using sed:

s="define('NO_OF_PORTS',10);"
n=25
sed "s/\('NO_OF_PORTS',\)[0-9]*/\1$n/" <<< "$s"
define('NO_OF_PORTS',25);

To change inline in the file use:

sed -i.bak "s/\('NO_OF_PORTS',\)[0-9]*/\1$n/" file

您可以在脚本中使用sed编辑文件

sed -i s/NO_OF_PORTS\',[0-9]*/NO_OF_PORTS\',$1/ $2

1.txt has

define('NO_OF_PORTS',19)

shell script

#!/bin/sh
echo $1
sed -i -r '/NO_OF_PORTS/ s/'[0-9]+'/'$1'/g' 1.txt

run

linux:/home/test # ./replace_port.sh 78
linux:/home/test # cat 1.txt
define('NO_OF_PORTS',78)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM