目录
示例6、在文件的第1行后面追加一行内容“I like Linux”
1、sed
1.1、sed命令的基本使用
作用:sed是操作、过滤和转换文本内容的强大工具,常用功能包括结合正则表达式对文件实现快速的增删改查,其中查询的功能中最常用的功能就是过滤、获取指定行。
语法: sed [选项] [sed内置命令] [目标文件]
选项:
参数选项 | 作用 |
-n | 取消默认的sed输出,常与sed的内置命令p一起使用 |
-i | 直接将修改后的结果写入文件,不使用-i,sed修改的是内存数据 |
-e | 可实现多次编辑,不需要使用管道符 |
-r | 支持正则扩展 |
sed的内置命令字符
- 用于对文件进行不同的操作功能,如对文件的增删改查
sed的内置命令字符 | 对应英文 | 作用 |
a | append | 对文本进行追加,在指定行后面添加一行/多行文本 |
d | delete | 删除匹配行 |
i | insert | 表示插入文本,在指定行前添加一行/多行文本 |
p | | 打印匹配行的内容,通常p与-n一起使用 |
s/正则/替换内容/g | ~ | 将匹配的内容进行替换,g代表全局匹配 |
sed匹配范围
范围 | 作用 |
空地址 | 全文处理 |
单地址 | 指定文件某一行 |
/pattern/ | 被模式匹配到的每一行 |
/pattern1/,/pattern2/ | 范围区间,或者 1,5 表示匹配1到5行的内容等价于 1,+4 表示第1行到往下4行的内容 |
1~2 | 步长,表示从1开始步长为2进行匹配,具体内容为1、3、5、7、9.....即匹配奇数行 ;2~2 表示从2开始匹配偶数行,2、4、6、8...... |
1.2、示例说明
示例1、输出文件sed_text.txt的第2,3行内容
命令:sed -n “2,3p” sed_test.txt 或 sed “2,3p” sed_test.txt -n 或 sed -n “2,+1p” sed_test.txt
示例2、过滤出有hello的行
命令:sed -n "/hello/p" sed_test.txt
示例3、删除book有关的行
命令:sed - i "/book/d" sed_test.txt
特别注意:-i 和 -n 参数一起使用会将文件全部数据删除
示例4、删除第2,3行的内容
命令:sed -i "2,3d" sed_test.txt
示例5、将This替换为It,将boy替换为cat
命令:sed -e "s/This/It/g" -e "s/boy/cat/g" sed_test.txt 或 sed -e "s#This#It#g" -e "s/boy/cat/g" sed_test.txt
示例6、在文件的第1行后面追加一行内容“I like Linux”
命令:sed "1a I like Linux" sed_test.txt -i
示例7、在文件中新增多行内容只需在内容的后面加上:\n
如:在第1行的前面插入两行内容:"I like Python " "I like Java"
命令:sed "1i I like Python \nI like Java" sed_test.txt -i
示例8、取出IP地址
方式1使用管道输出:ifconfig ens33 | sed "2p" -n | sed "s/^.inet //g" | sed "s/ net.$//g"
方式2使用-e参数批量编辑:ifconfig ens33 | sed -e "2s/^.inet //" -e "2s/net.$//p" -n