[英]Linux command to replace text in a file with text from redirected output
我正在使用Shell脚本来自动化一些服务器任务。 我需要做的主要事情之一就是配置。
我正在尝试找到一种从一种来源提取数据,然后在另一种来源替换数据的快速方法。 简而言之,我要尝试的是将my.cnf中的IP地址替换为ifconfig中的IP地址。 我要更改的IP地址是绑定地址。
这是我想做的一个例子:
A.使用ifconfig-获取网络信息(将包括IP地址)。
B.使用该输出,使用正则表达式仅提取IP地址
C.使用IP地址替换my.cnf中的绑定地址值
我不太熟悉管道和重定向。 我很确定我可能必须输出到一个变量,然后在另一个命令中使用该变量来完成操作? 使用perl会更容易吗?
编辑
这是执行此操作的代码:
ip=`ifconfig eth0 | grep "inet addr"| cut -d ":" -f2 | cut -d " " -f1` ; sed -i "s/\(bind-address[\t ]*\)=.*/\1= $ip/" /etc/mysql/my.cnf
非常感谢Jaidev Sridhar的指导。
$ ip=`ifconfig eth0 | grep "inet addr"| cut -d ":" -f2 | cut -d " " -f1`; sed -i "s/MYIP=.*/MYIP=$ip/g" foo.cnf
假设:
您可以使用awk / cut / sed从ifconfig输出中提取IP地址。
并使用sed -i更新my.cnf
没有削减,并且ip变量不会污染。
ip="`ifconfig eth0 | sed 's/.*inet addr:\([0-9\.]*\).*/\1/p'`" sed -i "s/^\(bind_address\)=.*/\1=$ip/" /etc/my.cnf
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.