sed编辑器
vim vi 交互式文本编辑工具
sed 流编辑器,非交互式处理文本。
文本 ——> 逐行 ——> 模式空间(处理)
sed编辑指令的格式如下:
[address1][,address2] function [argument]
其中,地址参数address1、address2为行数或regular expression字串,表示所执行编辑的资料行;函数参数function[argument]为sed的内定函数,表示执行的编辑动作。
常用函数:
a或a\ 添加(后面)
c或c\ 替换一行
d 删除
i或i\ 插入
p 打印
s 查找替换
-i 改变源文件
# sed -e '1d' f1.sh(把文件f1.sh第1行删除,但源文件并没有改变。-e 表示后面可以跟表达式)
# sed -e '1,3d' f1.sh(把第1行到第3行都删除)
# sed -e '2,$d' f1.sh(从第2行到最后一行都删除)
# sed -e '/^#/d' f1.sh(把行首为#的所有行全部删除)
# sed -e '/#/d' f1.sh(删除所有包含#的行)
# sed -e '/until/,/done/d' f1.sh(把包含until的行到包含done的行都删除)
# sed -e '1c\11111111111' f1(把第1行替换为11111111111)
# sed -e '2i\#author:xxx' f1(在第2行的前面插入#author:xxx)
# sed -e '1a\#author:xxx' f1(在第1行的后面添加#author:xxx)
# sed -n -e '1p' f1(只显示第1行)
-n 静默模式(只显示匹配的)
# sed -e 's/am/AM/' f1(把每一行的第一个am替换为AM)
# sed -e 's/am/AM/g' f1(把每一行所有的am都替换为AM)
# sed -e '/am/c\AM' f1(把每一行包含am的行替换为AM)
# sed -e '/am/cAM' f1(同上)
# sed -e '/baseurl/c\baseurl=file:///mnt/cdrom/Packages' /etc/yum.repos.d/CentOS-Base.repo
例:把/etc/sysconfig/network-scripts/ifcfg-eth0文件中ip地址由DHCP改为静态地址。
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp
# sed -e "/BOOTPROTO/cBOOTPROTO=static\nIPADDRESS=192.168.80.10\nNETMASK=255.255.255.0" /etc/sysconfig/network-scripts/ifcfg-eth0
1 #!/bin/bash 2 . /etc/sysconfig/network-scripts/ifcfg-eth0 3 if [ "$BOOTPROTO"="dhcp" ];then 4 sed -i -e 's/dhcp/static/' /etc/sysconfig/network-scripts/ifcfg-eth0 5 sed -i -e '3a\IPADDR=192.168.80.100\nNETMASK=255.255.255.0\nGATEWAY=192.168.80.254' /etc/sysconfig/network-scripts/ifcfg-eth 6 0 service network restart 7 fi
浙公网安备 33010602011771号