6.1 流式编辑命令sed基础
6.1.1 sed命令简介
1.一种新型的,非交互式的编辑器(vi编辑器式交互式的)
2.sed编辑器没有破坏性,它默认不会修改文件
3.默认输出到屏幕
6.1.2 sed 工作过程
1.从文件读取一行数据并把它保存到临时缓冲区中。
2.处理临时缓冲区的内容,并把它发送到屏幕上。
3.逐行处理文件直到最后一行
6.1.3 既然有了vi编辑器,为什么还要有sed编辑器?
sed 命令适合运用在shell脚本中
6.1.4 sed 命令基础
1.sed命令语法
sed 选项 ‘脚本’ 文件
2.选项:
-n或–quiet或–silent | 只显示匹配处理的行(否则会输出所有)(也就是关闭默认的输出) |
---|---|
-e | 多重编辑模式 |
-V或–version | 显示版本信息 |
-f | 指定一个脚本到命令行执行 |
-r | 使用扩展的正则表达式 |
-i | 直接修改文档读取的内容,不在屏幕上输出 |
3.动作说明:
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d :删除,因为是删除啊,所以 d 后面通常不接任何命令或者字符串;
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
- s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
4.动作详解
1.在/etc/fstab第5行后增加1行,内容为 ’Hello Sed!’
sed '5a Hello Sed!' /etc/fstab
file 文件:将以A开头的行用 "Hello"替代
sed '/^A/c Hello' file
删除file文件包含A字符的行
sed '/A/d' file
1.在/etc/fstab第5行前增加1行,内容为 ’Hello Sed!’
sed '5i Hello Sed!' /etc/fstab
-
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
1.用hello替换file文件中的A ,并只输出处理过的行
sed -n 's/A/hello/p' file
-
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!
1. 将文档中所有的字符串device转变成大写字符,并将结果重定向到当前用户家目录下的fstab1;
sed 's/device/DEVICE/g' /etc/fstab > /home/fstab1
2.将文档中每行第一个出现的字符串device转变成大写字符,并将结果重定向到当前用户家目录下的fstab1
sed 's/device/DEVICE/' /etc/fstab > /home/fstab1
3.将文档中每行第2次出现的字符串device转变成大写字符,并将结果重定向到当前用户家目录下的fstab1
sed 's/device/DEVICE/2' /etc/fstab > /home/fstab1
5.地址定位
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-apGmdjwt-1635207916991)(https://i.loli.net/2021/10/26/YOMjpakyXzJR8o5.png)]