myfile.txt
이 명령의 목적은 파일의 모든 IP를 서버의 로컬 IP로 자동으로 바꾸는 것입니다.
예:
sed -i -e 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/LOCALIP/g' myfile.txt
다음 명령을 사용하여 sed에서 로컬 IP 주소를 얻을 수 있는지 알고 싶습니다.
LOCALIP
기본적으로 내 예제를 이 명령으로 바꾸고 싶습니다 .
/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1
답변1
큰따옴표 안에 명령 대체를 사용할 수 있습니다.
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
작은 따옴표에서는 작동하지 않으므로 작은 따옴표를 먼저 끝내고 LOCALIP
명령에 큰 따옴표를 사용하십시오. 이렇게 하면 검색 모드에서 실수로 확장되는 일이 발생하지 않습니다.
답변2
다음 명령은 나에게 잘 작동합니다
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)/"
답변3
이 명령을 사용하여 문제를 해결했습니다.
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