温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

sed运用实例一——基于变量的动态替换

发布时间:2020-07-17 21:18:46 阅读:1339 作者:tiancong 栏目:系统运维
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在工作中我需要修改两个文件:

文件一:/etc/vmware/networking

VERSION=1,0 answer VNET_1_DHCP yes answer VNET_1_DHCP_CFG_HASH 50CE8453B1072EA401BFFA704E6C01F7AE0BA67C answer VNET_1_HOSTONLY_NETMASK 255.255.255.0 answer VNET_1_HOSTONLY_SUBNET 172.16.77.0 answer VNET_1_VIRTUAL_ADAPTER yes answer VNET_8_DHCP yes answer VNET_8_DHCP_CFG_HASH 1DA1A936DCB3AA3313CF293A9C96D25B76AB48A2 answer VNET_8_HOSTONLY_NETMASK 255.255.255.0 answer VNET_8_HOSTONLY_SUBNET 192.168.43.0 answer VNET_8_NAT yes answer VNET_8_VIRTUAL_ADAPTER yes 

文件二:/etc/vmware/vmnet8/dhcpd/dhcpd.conf

# Configuration file for ISC 2.0 vmnet-dhcpd operating on vmnet8. # # This file was automatically generated by the VMware configuration program. # See Instructions below if you want to modify it. # # We set domain-name-servers to make some DHCP clients happy # (dhclient as configured in SuSE, TurboLinux, etc.). # We also supply a domain name to make pump (Red Hat 6.x) happy. #   ###### VMNET DHCP Configuration. Start of "DO NOT MODIFY SECTION" ##### # Modification Instructions: This section of the configuration file contains # information generated by the configuration program. Do not modify this # section. # You are free to modify everything else. Also, this section must start  # on a new line  # This file will get backed up with a different name in the same directory  # if this section is edited and you try to configure DHCP again.  # Written at: 03/22/2013 15:49:55 allow unknown-clients; default-lease-time 1800;                # default is 30 minutes max-lease-time 7200;                    # default is 2 hours  subnet 192.168.43.0 netmask 255.255.255.0 {     range 192.168.43.128 192.168.43.254;     option broadcast-address 192.168.43.255;     option domain-name-servers 192.168.43.2;     option domain-name localdomain;     default-lease-time 1800;                # default is 30 minutes     max-lease-time 7200;                    # default is 2 hours     option netbios-name-servers 192.168.43.2;     option routers 192.168.43.2; } host vmnet8 {     hardware ethernet 00:50:56:C0:00:08;     fixed-address 192.168.43.1;     option domain-name-servers 0.0.0.0;     option domain-name "";     option routers 0.0.0.0; } ####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" ####### 

需求:

将两个文件中的"192.168.43"修改为"202.16.22",不过,有时"192.168.43"会表现为其它的IP值,而要修改的目标字串"202.16.22"也可能会随着环境的改变另行设置.

基于此需求,本人编写了如下测试脚本:

针对文件一:

#!/bin/bash # $vmnat_subnet_old变量表示vmnat8原有的子网配置,注意只截取前三段 vmnat_subnet_old=`grep "VNET_8_HOSTONLY_SUBNET" /etc/vmware/networking | sed 's/..$//' | cut -d' ' -f 3` # $vmnat_subnet_new变量表示vmnat8子网的目标配置,注意只截取前三段 vmnat_subnet_new='192.168.40'  cp /etc/vmware/networking /etc/vmware/networking_bak0 sed -i '/VNET_8_HOSTONLY_SUBNET/s/'"$vmnat_subnet_old"'/'"$vmnat_subnet_new"'//etc/vmware/networking grep "$vmnat_subnet_new" /etc/vmware/networking cp /etc/vmware/networking_bak0 /etc/vmware/networking 

针对文件二:

#!/bin/bash # $vmnat_subnet_new变量表示vmnat8子网的目标配置,注意只截取前三段 vmnat_subnet_new='192.168.40'  # $vmnat_subnet_old变量表示vmnat8原有的子网配置,注意只截取前三段 vmnat_subnet_old=`grep "VNET_8_HOSTONLY_SUBNET" /etc/vmware/networking | sed 's/..$//' | cut -d' ' -f 3`  cat /etc/vmware/vmnet8/dhcpd/dhcpd.conf cp /etc/vmware/vmnet8/dhcpd/dhcpd.conf /etc/vmware/vmnet8/dhcpd/dhcpd.conf_bak0 sed -i '/'"$vmnat_subnet_old"'/s//'"$vmnat_subnet_new"'/g' /etc/vmware/vmnet8/dhcpd/dhcpd.conf grep "$vmnat_subnet_new" /etc/vmware/vmnet8/dhcpd/dhcpd.conf cp /etc/vmware/vmnet8/dhcpd/dhcpd.conf_bak0 /etc/vmware/vmnet8/dhcpd/dhcpd.conf 

优点:

可以不用事先知道要替换的字符是(本例中:192.168.43)什么,只需要知道自己想替换为(本例中:202.16.22)什么就可以了。

 呵呵,我的工作桌面截图。

sed运用实例一——基于变量的动态替换

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×