我正在尝试替换此命令:
HOST_IP_ADDRESS=$(/sbin/ifconfig | grep inet | grep -v 127.0.0.1 | awk '{print $2}' | cut -d)
在我的多重脚本文件中一次尝试。我通过
来增加输出 grep -R 'HOST_IP_ADDRESS' ./ -R | grep "127.0.0.1" | awk -F ":" '{print $2}'
我想用HOST_IP_ADDRESS = hostname -i
而不是
HOST_IP_ADDRESS=$(/sbin/ifconfig | grep inet | grep -v 127.0.0.1 | awk '{print $2}' | cut -d
是他们通过sed命令做的任何方式。
答案 0 :(得分:0)
为什么要使用sed?也许你可以使用这个替代解决方案:
HOST_IP_ADDRESS=$(hostname -I | cut -f1 -d' ')
请参阅Putting IP Address into bash variable. Is there a better way
答案 1 :(得分:0)
如果我理解你,你想要替换它:
HOST_IP_ADDRESS=$(/sbin/ifconfig | grep inet | grep -v 127.0.0.1 | awk '{print $2}' | cut -d)
由:
HOST_IP_ADDRESS=$(hostname -i)
由于需要转义的字符,这有点难,请看下面的脚本:
#! /bin/bash
o='HOST_IP_ADDRESS=$(/sbin/ifconfig | grep inet | grep -v 127.0.0.1 | awk '\''{print $2}'\'' | cut -d)'
n='HOST_IP_ADDRESS=$(hostname -i)'
echo "$o" > file
sed -e 's#'"$o"'#'"$n"'#g' file
其输出:
bash test.sh
HOST_IP_ADDRESS=$(hostname -i)
cat file
HOST_IP_ADDRESS=$(/sbin/ifconfig | grep inet | grep -v 127.0.0.1 | awk '{print $2}' | cut -d)
关于你如何逃避的事情,你可以看到这个脚本在$o
创建一个包含旧字符串的文件然后用新字符串$n
替换,如果你想要的话为sed修改文件使用-i.bak
而不是-e
以确保您进行备份
答案 2 :(得分:0)
这将就地编辑您的文件,用$(hostname -i)
替换ifconfig hack:
sed -i -e 's/\(HOST_IP_ADDRESS=\).*/\1$(hostname -i)/' filenames-go-here
先备份。
实际上它不会只是替换ifconfig hack,它将替换以HOST_IP_ADDRESS=
开头的任何行