目录
一.sed基本用法及选项
二.sed脚本语法及命令
三.sed的查找替换使用
四.后向引用
五.变量
一.sed基本用法及选项
sed [选项]... '{自身脚本语法};....' [input file...]
seq 10 |sed #生成1-10数字传给sed
#该格式报错,基本格式中的'{自身脚本语法}'不可以不写,可以写空则是默认打印全部内容如下
seq 10 | sed ''
1
2
3
4
5
sed选项:
① -n 选项,sed默认有自动打印功能,-n选项是关闭打印功能,一般配合脚本命令p使用
②-r 选项,开启扩展正则表达式
③-i 选项,在文件中添加内容,可以在-i是加.bak后缀备份修改的文件。例如 sed -i.bak a.txt会在同目录下生成一个a.txt.bak文件
二.sed脚本语法及命令
sed脚本语法:地址+sed自己脚本命令,地址即范围例如全文或第一行,第一行至第三行等范围
sed脚本命令:
p 将内容打印到屏幕,使用时关闭自动打印功能,-n选项
q 到指定的内容即退出,例如打印到第三行直接退出
IP 内容忽略大小写,使用时关闭自动打印功能,-n选项
d 删除指定内容
a 在指定位置添加内容
c 替换指定内容
~ 步进,0~2,2个间隔,1~2,1个间隔 seq 10 |sed -n '0~2p'每间隔2个打印一次
三.sed的查找替换使用
格式:sed '/可使用正则表达式选择范围/'s/查找内容/替换内容/g g表示全文,固定格式的///可以用###等符号替换
注意:查找内容可使用正则表达式,替换内容不可使用正则表达式
例子1:
搜索/etc/passwd 中包含root字符的行
sed -nr '/root/p' /etc/passwd #-n关闭自动打印,-r启用扩展正则表达式查询root字符并打印
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin #查询结果
例子2:
使用sed关闭selinux
cat /etc/selinux/config #查看selinux配置文件内容
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#-i选项备份selinux配置文件后缀加.bak,在config文件中找到SELINUX=enforcing修改为SELINUX=disabled,g表示所有搜索到的内容都替换。单引号中''s之前可加行号
四.后向引用
( )内的按顺序标为123 ,引用时\1调用第一个()的内容,\n表示调用第n个()的内容。
.*表示任意长度字符不管是什么字符
例子1:取ip地址
ifconfig ens33 |sed -nr 's/.*inet (.*) netmask.*/\1/p'
#查看ens33的网卡信息传给sed处理,-n选项关闭自动打印,-r选项开启扩展正则表达式
's///'查找替换标准格式,.*inet 表示以inet为止的前面所有字符 (.*) 括号表示使用反向引用
.*表示该处的任意字符 netmask.*表示以netmask开头后面的所有字符。\1表示反向引用第一个()的
内容,p表示打印出来
192.168.30.11 #打印结果
例子2:
echo abc123XYZ | sed -nr 's/(abc)(123)(XYZ)/\3\2\1/p'
#打印abc123XYZ传给sed处理变成XYZ123ABC,-n选项关闭自动打印,-r选项开启扩展正则表达式
's///'查找替换标准格式。三个()括起来的内容分别表示元素123,调用时改变调用顺序打印即可改变内容顺序
XYZ123abc #打印结果
五.变量
使用sed查询是可以直接调用变量,注意必须用“ ”号或者俩个双引号,单引号不识别变量