sed에서 명령 사용

sed에서 명령 사용

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

관련 정보