一 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地址
相關文件有兩個 /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