想要使用第二个grep。
中的结果ip更改security.server.ip = *之后的所有内容First Grep:
cat admin.conf|grep security.server.ip|grep -v ^#
结果:
security.server.ip=10.10.1.2
Second Grep:
cat /etc/hosts|grep -i admin-server|head -1|awk '{ print $1}
结果:
10.10.1.2
有时在admin.conf上security.server.ip会有所不同,我想知道如何用一个命令替换它,它将从第二个grep中捕获IP地址并在第一个grep中替换它。
答案 0 :(得分:1)
您可以使用脚本:
#!/bin/sh
IP=$(exec grep -i admin-server /etc/hosts | awk '{ print $1; exit }')
sed -i "/^security\.server\.ip=/s|=.*|=$IP|" admin.conf
答案 1 :(得分:1)
您可以将其保存在变量中:
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
答案 2 :(得分:0)
使用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.conf