Shell脚本动态替换字符串

时间:2014-01-17 09:00:47

标签: linux bash shell

我正在为linux编写一个shell脚本,它将参数作为端口号。 内部文件跟随是一行需要更新:

define('NO_OF_PORTS',10);

我需要通过传递的参数替换10。 但这应该是动态的,就像下次我通过新端口时,它必须得到更新。

3 个答案:

答案 0 :(得分:1)

使用sed:

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

要更改文件中的内联使用:

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

1.txt有

define('NO_OF_PORTS',19)

shell脚本

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

运行

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