我正在为linux编写一个shell脚本,它将参数作为端口号。 内部文件跟随是一行需要更新:
define('NO_OF_PORTS',10);
我需要通过传递的参数替换10。 但这应该是动态的,就像下次我通过新端口时,它必须得到更新。
答案 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)