eu resolvi meu problema com este comando
sed -i "s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/$(ifconfig | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}')/" myfile.txt
O propósito do comando deve ser substituir qualquer IP no arquivo myfile.txt
com o ip local do servidor automaticamente
exemplo:
sed -i -e 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/LOCALIP/g' myfile.txt
Eu quero saber se é possível usar o comando para obter o endereço IP local dentro sed
basicamente eu quero substituir LOCALIP
no meu exemplo com este comando
/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1
Você pode usar a substituição de comandos entre aspas duplas:
sed -i -e 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/'"$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1)/g" myfile.txt
Em aspas simples, isso não funcionará, por isso, finalize as aspas simples antes de LOCALIP
, use aspas duplas para o comando. Dessa forma, não fazemos expansões acidentalmente no padrão de pesquisa.
Abaixo, o comando funcionou bem para mim
sed "s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1)/"