删除配置文件中 # 号注释的行
sed -ri '/^#/d' file.conf
删除开头的一个或者多个 空格或者 Tab 键
sed -ri '/^[ ]*#/d' file.conf
YUM 源修改
sudo sed -ri s/^#baseurl/baseurl/g /etc/yum.repos.d/CentOS-Base.repo
sudo sed -ri s/^mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOSBase.repo
空格和table键 '/^#/d' [ ] * 空格和table
删除配置文件中//号注释行
sed -ri 'Y^[ ]*//Yd' file.conf
删除无内容空行
- 开头和结尾之间什么都没有的行
- 开头和结尾之间有多个空格的行
- 开头和结尾之间有多个 Tab 键的行
sed -ri '/^[ ]*($|#)/d' /etc/vsftpd/vsftpd.conf
修改文件:
sed -ri '$achroot_local_user=YES' /etc/vsftpd/vsftpd.conf
sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
sed -ri '/UseDNS/cUseDNS no' /etc/ssh/sshd_config
sed -ri '/GSSAPIAuthentication/cGSSAPIAuthentication no' /etc/ssh/sshd_config
给文件行添加注释:
sed -r '2,6s/^/#/' a.txt
使用小括号进行分组,可以有多个分组, 后面可以使用 1 获取到第一个分组的内容
sed -r '2,6s/(.*)/#1/' a.txt
sed -r '2,6s/.*/#&/' a.txt &匹配前面查找的内容
sed -r '3,$ s/^#*/#/' a.txt 将行首零个或多个#换成一个#
sed -r '30,50s/^[ ]*#*/#/' /etc/nginx.conf
sed -r '2,8s/^[ #]*/#/' /etc/nginx.conf
sed中使用外部变量
var1=11111
# 正确
sed -r "3a$var1" /etc/hosts
# 有效
sed -r 3a$var1 /etc/hosts
# 有效,但是中间不能有空格
sed -r '$a'"$var1" /etc/hosts
# 有效, 将第一个 $ 进行转义
sed -r "$a $var1" /etc/hosts
多重编辑选项:-e
sed -e '1,3 d' -e 's/root/shark/' mypasswd
插入命令:i
sed -r '2i111111111111122' /etc/hosts
修改命令:a
sed -r '$a 1.1.1.1 www.qfedu.com' /etc/hosts
替换命令:s
sed -rn 's/[0-9][0-9]/&.5/' mypasswd //&代表在查找串中匹配到的所有内容