这是一个示例表达式:
sed -i 's/^(central.databases*=s*).*$/1SQLTEST/' file.cfg
如果要匹配其中
/的内容,可以使用另一个定界符:
sed -i 's#^(cent/ral.data/bases*=s*).*$#1SQL/TEST#' file.cfg
或使用可变扩展:
VAL="SQLTEST"sed -i "s/^(central.databases*=s*).*$/1$VAL/" file.cfg
在您的示例中:
sshRetValue=`sed -i "s/^(1$CENTRAL_DB_NAMEs*=s*).*$/1$CENTRAL_DB_VALUE/" /home/testing.txt`;
$ CENTRAL_DB_NAME前面有一个 1无效。而且,sed不会打印它的返回值。这是检查返回值的首选方法:
sed -i "s/^($CENTRAL_DB_NAMEs*=s*).*$/1$CENTRAL_DB_VALUE/" /home/testing.txt;sed_return_value=$?
最终通过管道传输到ssh(未经测试):
sed_return_value=$(ssh server <<EOF sed -i "s/^($CENTRAL_DB_NAMEs*=s*).*$/1$CENTRAL_DB_VALUE/" /home/testing.txt; echo $?EOF)
-i用于替换输入文件中的数据。否则,sed将写入stdout。
正则表达式是它们自己的领域。除非有某些特定的功能使您难以理解,否则不可能在stackoverflow答案中深入解释它们。



