一 Sed 命令 

命令格式: sed [-nefi] '[动作]' [filename]


参数:

-n 安静模式,只显示sed处理的那一行。

-e 多重编辑,可以同时执行多个动作。sed -e '1d' -e '1a ttt'

-f 将sed动作写入脚本,通过过sed -f scriptfile执行sed操作。

-i 直接编辑文本。

动作:

a 新增,接字符串可以直接出现在下一行。

c 替换,sed '1,5c kkkkkk' 1~5行使用kkkkk替换。

d 删除,sed '1d' 删除第一行。

i 插入,sed '1i kkkk'在第一行之前插入新的一行。

p 打印,sed 'p' filename 打印文本

s 替换,sed 's/abc/xxxx/g' 将abc使用xxxx替换,g是全部替换,使用数字可以指定第几次出现才替换,p是打印替换后的行

q 匹配到某行退出 3q 第三行推出。

r 匹配到的行读取某文件 sed '1r qqq' abc

w 匹配到的行写入文件 sed '/m/w qqq' abc 从abc中读取带m的行写入qqq文件中(覆盖)


实验:自动化修改克隆后的虚拟机mac地址

  1. 相关文件有两个 /etc/udev/rules.d/70-persistent-net.rules 和 /etc/sysconfig/network-scripts/ifcfg-eth0 修改70-persistent-net.rules中的网卡信息并获取mac地址替换到ifcfg-eth0中。

#使用sed修改70-persistent-net.rules文件,修改正确的网卡信息
sed -i '/eth0/d' /etc/udev/rules.d/70-persistent-net.rules 
sed -i 's/eth1/eth0/g' /etc/udev/rules.d/70-persistent-net.rules
#获取正确的MAC并赋值给mac
mac=$(sed -e 's/^.*ATTR{address}=="//g' -e 's/",.*//g' -e '/^$/d'  /etc/udev/rules.d/70-persistent-net.rules | grep -v "#")
#使用sed s动作替换MAC地址(注:sed中引用变量需要将单引号改为双引号)
sed "s/HWADDR=.*/HWADDR=$mac/g" /etc/sysconfig/network-script/ifcfg-eth0