Sed、Awk和grep 学习笔记(一)

一 Sed 命令 bash

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


参数:ip

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

-e 多重编辑,能够同时执行多个动做。sed -e '1d' -e '1a ttt'字符串

-f 将sed动做写入脚本,经过过sed -f scriptfile执行sed操做。虚拟机

-i 直接编辑文本。it

动做:自动化

a 新增,接字符串能够直接出如今下一行。class

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
相关文章
相关标签/搜索