Use um comando dentro do sed

1

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 
    
por Ali EL KANDOUSSI 21.11.2018 / 15:46

3 respostas

0

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
    
por 21.11.2018 / 18:28
1

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.

    
por 21.11.2018 / 15:52
0

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)/"
    
por 21.11.2018 / 16:30

Tags