sed是Stream Editor(流编辑器)的缩写,用来处理文件的。 工作原理: sed是一行一行读取文件内容并按照要求进行处理,把处理后的结果输出到屏幕
- 首先sed读取文件中的一行内容,把其保存在一个临时缓存区中(也称为模式空间)
- 然后根据需求处理临时缓冲区中的行,完成后把该行发送到屏幕上
总结:
- 由于sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会直接修改原文件
- Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作,对文件进行过滤和转换操作
sed常见的语法格式有两种,一种叫命令行模式,另一种叫脚本模式。
(1)语法格式
- 常用选项
- 常见处理动作
丑话说在前面:以下所有的动作都要在单引号里
(2)举例说明
①对文件进行增、删、改、查操作
语法:sed 选项 '定位+命令’ 需要处理的文件
1)打印文件内容
2) 增加文件内容 i 在上面插入 a 在下面插入
3) 修改文件内容 c 替换指定的整行内容
4) 删除文件内容 d 删除
②对文件进行搜索替换操作
语法:sed 选项 ‘s/搜索的内容/替换的内容/动作’ 需要处理的文件 其中,s表示search搜索;斜杠/表示分隔符,可以自己定义;动作一般是打印p和全局替换g
以下待整理------
③ 其他命令
举例说明:
④ 其他选项
⑤ sed结合正则使用
sed 选项 'sed命令或者正则表达式或者地址定位=='== 文件名
- 定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。
- 如果没有指定地址,sed将处理输入文件的所有行。
##2. 脚本格式
㈠ 用法
㈡ 注意事项
㈢举例说明
##3. 补充扩展总结
#四、课堂练习
- 将任意数字替换成空或者制表符
- 去掉文件1-5行中的数字、冒号、斜杠
- 匹配root关键字替换成hello itcast,并保存到test.txt文件中
- 删除vsftpd.conf、smb.conf、main.cf配置文件里所有注释的行及空行(不要直接修改原文件)
- 使用sed命令截取自己的ip地址
- 使用sed命令一次性截取ip地址、广播地址、子网掩码
- 注释掉文件的2-3行和匹配到以root开头或者以ftp开头的行
#五、课后实战
1、写一个初始化系统的脚本 1)自动修改主机名(如:ip是192.168.0.88,则主机名改为server88.itcast.cc)
a. 更改文件非交互式 sed
/etc/sysconfig/network
b.将本主机的IP截取出来赋值给一个变量ip;再然后将ip变量里以.分割的最后一位赋值给另一个变量ip1
2)自动配置可用的yum源
3)自动关闭防火墙和selinux
2、写一个搭建ftp服务的脚本,要求如下: 1)不支持本地用户登录 local_enable=NO 2) 匿名用户可以上传 新建 删除 anon_upload_enable=YES anon_mkdir_write_enable=YES 3) 匿名用户限速500KBps anon_max_rate=500000