sed常用命令

删除配置文件中 # 号注释的行
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 //&代表在查找串中匹配到的所有内容

  

原文地址:https://www.cnblogs.com/zhugq02/p/13092176.html