从文件中替换 IP 地址
Replace IP Address from file
Sample.txt 文件:
.........................
some log file entries
some log file entries
some log file entries
some log file entries
This system ip is not found
some log file entries
some log file entries
some log file entries
This system IP is 172.16.80.10
some log file entries
some log file entries
This system IP:172.16.80.10
some log file entries
some log file entries
some log file entries
Hostname::ip-172.16.80.10.ec2.internal
some log file entries
some log file entries
......................
我想替换文件中的 IP 地址而不是主机名,但它也在更改主机名。
我正在使用此命令替换 IP 地址:
sed s/172.16.80.10/172.16.80.12/g sample.txt
获取输出
.........................
some log file entries
some log file entries
some log file entries
some log file entries
This system ip is not found
some log file entries
some log file entries
some log file entries
This system IP is 172.16.80.12
some log file entries
some log file entries
This system IP:172.16.80.12
some log file entries
some log file entries
some log file entries
Hostname::ip-172.16.80.12.ec2.internal
some log file entries
some log file entries
......................
(同时更改主机名)
期望的输出是
.........................
some log file entries
some log file entries
some log file entries
some log file entries
This system ip is not found
some log file entries
some log file entries
some log file entries
This system IP is 172.16.80.12
some log file entries
some log file entries
This system IP:172.16.80.12
some log file entries
some log file entries
some log file entries
Hostname::ip-172.16.80.10.ec2.internal
some log file entries
some log file entries
......................
代码示例:
while getopts i:h: opt
do
case $opt in
i)
CurrentLocalIpv4=`curl -s http://169.254.169.254/latest/meta-data/local-ipv4`
if [[ $OPTARG =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
sed -i s/"$CurrentLocalIpv4"/"$OPTARG"/g /home/ec2-user/sample.txt
echo "ip cahnged"
else
echo "fail"
fi
;;
h)
echo"hostname" ;;
esac
done
使用你的命令,你可以修改如下:
sed 's/172.16.80.10$/172.16.80.12/g' sample.txt
也就是说,告诉sed
您只想更改要更改的IP并且后面没有更多字符的行(172.16.80.10$)。
如果你有修改IP的变量,($CurrentLocalIpv4),你可以这样写:
sed 's/'$CurrentLocalIpv4'$/172.16.80.12/g' sample.txt
Sample.txt 文件:
.........................
some log file entries
some log file entries
some log file entries
some log file entries
This system ip is not found
some log file entries
some log file entries
some log file entries
This system IP is 172.16.80.10
some log file entries
some log file entries
This system IP:172.16.80.10
some log file entries
some log file entries
some log file entries
Hostname::ip-172.16.80.10.ec2.internal
some log file entries
some log file entries
......................
我想替换文件中的 IP 地址而不是主机名,但它也在更改主机名。
我正在使用此命令替换 IP 地址:
sed s/172.16.80.10/172.16.80.12/g sample.txt
获取输出
.........................
some log file entries
some log file entries
some log file entries
some log file entries
This system ip is not found
some log file entries
some log file entries
some log file entries
This system IP is 172.16.80.12
some log file entries
some log file entries
This system IP:172.16.80.12
some log file entries
some log file entries
some log file entries
Hostname::ip-172.16.80.12.ec2.internal
some log file entries
some log file entries
......................
(同时更改主机名)
期望的输出是
.........................
some log file entries
some log file entries
some log file entries
some log file entries
This system ip is not found
some log file entries
some log file entries
some log file entries
This system IP is 172.16.80.12
some log file entries
some log file entries
This system IP:172.16.80.12
some log file entries
some log file entries
some log file entries
Hostname::ip-172.16.80.10.ec2.internal
some log file entries
some log file entries
......................
代码示例:
while getopts i:h: opt
do
case $opt in
i)
CurrentLocalIpv4=`curl -s http://169.254.169.254/latest/meta-data/local-ipv4`
if [[ $OPTARG =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
sed -i s/"$CurrentLocalIpv4"/"$OPTARG"/g /home/ec2-user/sample.txt
echo "ip cahnged"
else
echo "fail"
fi
;;
h)
echo"hostname" ;;
esac
done
使用你的命令,你可以修改如下:
sed 's/172.16.80.10$/172.16.80.12/g' sample.txt
也就是说,告诉sed
您只想更改要更改的IP并且后面没有更多字符的行(172.16.80.10$)。
如果你有修改IP的变量,($CurrentLocalIpv4),你可以这样写:
sed 's/'$CurrentLocalIpv4'$/172.16.80.12/g' sample.txt