您的位置:首页 > 其它

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

2017-02-07 20:15 274 查看
一 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地址
相关文件有两个 /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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mac地址 虚拟机 sed