希望使用第二个grep中的结果ip在security.server.ip=*之后更改所有内容。
第一次全球可再生能源方案:
cat admin.conf|grep security.server.ip|grep -v ^#结果:
security.server.ip=10.10.1.2第二次全球可再生能源方案:
cat /etc/hosts|grep -i admin-server|head -1|awk '{ print $1}结果:
10.10.1.2有时,security.server.ip在admin.conf上会有所不同,我想知道如何用一个命令替换它,该命令将捕获IP地址,形成第二个grep,并在第一个命令中替换它。
发布于 2014-08-05 13:33:59
您可以使用脚本:
#!/bin/sh
IP=$(exec grep -i admin-server /etc/hosts | awk '{ print $1; exit }')
sed -i "/^security\.server\.ip=/s|=.*|=$IP|" admin.conf发布于 2014-08-05 13:35:23
可以将其保存在一个变量中:
NEWIP=`grep -i admin-server /etc/hosts|head -1|awk '{ print $1}'` \
sed -i "s/^security\.server\.ip=[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/security\.server\.ip=$NEWIP/" admin.conf发布于 2014-08-05 14:47:04
使用GNU awk进行内部编辑、nextfile和gensub():
gawk -i inplace '
NR==FNR{ if (tolower($0) ~ /admin-server/) { ip=$1; nextfile } next }
{ $0=gensub(/(security\.server\.ip=).*/,"\\1"ip,""); print }
' /etc/hosts admin.confhttps://stackoverflow.com/questions/25140018
复制相似问题