Linux sed更换(需要协助)

Linux sed更换(需要协助),linux,bash,sed,scripting,Linux,Bash,Sed,Scripting,我有一个文件位于/var/www/html/daloradius/library/daloradius.conf.php 其中包含以下提到的行: $configValues['CONFIG_DB_PORT'] = '3306' $configValues['CONFIG_DB_USER'] = 'root' 我想替换“3306”->“5432”和“root”->“postgres” 使用shell脚本,请帮助我如何使用sed命令。如果您无法在安装之前准备配置文件,并且只需在标准配置上解压您的版

我有一个文件位于/var/www/html/daloradius/library/daloradius.conf.php

其中包含以下提到的行:

$configValues['CONFIG_DB_PORT'] = '3306'
$configValues['CONFIG_DB_USER'] = 'root'
我想替换“3306”->“5432”和“root”->“postgres”
使用shell脚本,请帮助我如何使用sed命令。

如果您无法在安装之前准备配置文件,并且只需在标准配置上解压您的版本,您可以使bash脚本如下所示:

#!/bin/bash

set -e

dalconf="/var/www/html/daloradius/library/daloradius.conf.php"

cleanup() {
    rm -f "$tmpfile"
}

trap cleanup EXIT
tmpfile=$(mktemp)

# '3306' --> '5432' and 'root' --> 'postgres'

sed -E -e "s/'3306'/'5432'/" -e "s/'root'/'postgres'/" "$dalconf" > "$tmpfile"
mv "$tmpfile" "$dalconf"

注意:“3306”或“root”上的任何匹配项都将匹配,因此您可以随意增加匹配字符串。

到目前为止您尝试了什么?我建议在您最喜欢的编辑器中打开文件,只需更改值即可。没有@TEDLYNGOM,因为我需要在shell脚本中使用此命令。然后您的问题标题应该是如何处理sed命令中有空格,您应该在问题本身中包含您尝试过的命令。我们看不懂你的心思,你需要告诉我们你的处境。@TedLyngmo我正在编写一个shell脚本,用于在我的客户系统上安装Apache、Postgresql、Freeradius、PHP和这个daloradius网站,所以我需要对2-3个配置文件进行更改,这是我手动完成的。