前言:sed是Stream Editor(字符流)的缩写,简称流编辑器。
sed是操作、过滤和转换问吧内容的强大工具。sed是一次读取一行数据
常用功能包括结合正则表达式对文件实现快速增删改查,其中查询的功能中最常用的两大功能是过滤(过滤指定字符串),取行(取出指定行)
sed命令
语法:
sed [选项] [sed内置命令字符] [输入文件]
选项
参数 | 解释 |
-n | 取消默认sed的输出,常与sed内置命令p一起使用 |
-i | 直接将修改结果写入文件,不用-i,sed修改的是内存数据 |
-e | 多次编辑,不需要管道符了 |
-r | 支持正则扩展 |
sed内置命令字符用于对文件进行不同的操作功能,如对文件增删改查
sed常用 内置命令字符:
sed的内置命令字符 | 解释 |
a | append,对文本追加,在指定行后面添加一行,多行问吧 |
d | delete,删除匹配行 |
i | insert,表示插入文本,在指定行前面添加一行/d多行文本 |
p | print,打印匹配行的内容,工厂p与-n一起使用 |
s/正则/替换内容/g | 匹配正则内容,然后替换内容(支持正则),结尾g(global)代表全局匹配 |
sed匹配范围
范围 | 解释 |
空地址 | 全文处理 |
单地址 | 指定某一行 |
/pattern/ | 被模式匹配到每一行 过滤 / / 中间的内容 |
范围区间 | 10,20 十到二十行, 10,+5 第十行向下五行 , /pattern1/,/pattern2/ |
步长 | 1~2,表示1、3、5、7、9奇数行 , 2~2两个步长,表示2、4、6、8、10偶数行 |
sed案例
案例1:输出dome1文件第2,3行内容
sed -n '2,3p' dome1 or sed -n '2,+1p' dome1
案例2: 过滤出含有linux的字符串行
sed -n '/linux/p' dome1
案例3:删除有blooms的行
sed -i '/blooms/d' dome1
案例4:从第五行删除到最后一行 第五行也删除
sed -i '5,$d' dome1
案例5:替换文件所有the 为file
sed -i 's/the/file/g' dome1
案例6: 替换文件所有the为then 并且把8替换成888
sed -e 's/the/then/g' -e 's/8/888/g' -i dome1
案例7:在文件第二行后面追加内容 aaa
sed -i '2a aaa' dome1
案例8:在文件内容第一行前面新增 #!/bin/bash
sed '1i #!/bin/bash' dome1 -i
案例9:在文件中批量新增数据 在第三行下面新增两条数据 使用 \n 换行符
sed '3a I like girl.\nI like prety girl' dome1
案例10:在每一行地下 插入一行数据
sed 'a -------------------' dome1
案例11: 在每一行上面 插入一行数据
sed 'i --------------------' dome1
案例12: 取出IP地址
ifconfig ens33 | sed -n '2p'| sed -e 's/^.*inet//g' -e 's/net.*$//g' -e 's/ //g'
获取ens33信息 获取第二行数据 替换开头到inet的数据为空 替换net到最后的数据为空 把空格替换为空 下面也可以实现
ifconfig ens33 | sed -n -e '2s/^.*inet//g' -e '2s/net.*$//g' -e '2s/ //gp'