Linux三剑客-sed

前言: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'

 

你可能感兴趣的:(linux,运维,服务器)