(sed beginner)替换env变量中的字符

时间:2012-07-02 16:29:24

标签: linux shell sed

使用sed时如何“动态”替换caracters? 示例:

我希望执行此命令:     / bin / sed的/ HOSTNAME =。* / HOSTNAME = server_domain_com / g'/ etc / sysconfig / network

而不是这一个:     / bin / sed's / HOSTNAME =。* / HOSTNAME = server.domain.com / g'/ etc / sysconfig / network

字符串“server.domain.com”包含在env变量中,我想在替换/ etc / sysconfig / network中的相应行之前用下划线替换这些点。

谢谢!

2 个答案:

答案 0 :(得分:7)

HOSTNAME=$(echo $HOSTNAME | sed s/from/to/g)

答案 1 :(得分:2)

您也可以使用bash替换来执行此操作:

/bin/sed -i "s/HOSTNAME=.*/HOSTNAME=${HOSTNAME//./_}/g" /etc/sysconfig/network

//指示它改变所有出现的事件(如sed中的g)。不要忘记-i标志来实际更改文件,而不仅仅是打印它。