Linux文本三剑客-sed
Linux_commands #正则表达式
详解
sed是stream editor的缩写,简称流编辑器
sed是操作、过滤和转换文本内容的强大工具
常用功能包括结合正则表达式对文件实现快速增删改查,其中查询的功能中最强大的两个功能是过滤(过滤指定的字符串)、取行(取出指定行)
sed工作流程
- 文件test.txt
- 逐行读取文本文件
- sed模式空间(pattern space)
- 读取每一行数据放入自己的工作车间(文本数据读入内存)
- 模式匹配
- 匹配成功
- 编辑(输出到屏幕)
- 匹配失败
- 默认输出到屏幕(可取消)
- 匹配成功
语法
sed [选项] [sed内置命令字符] [输入文件]
选项
| 参数选项 | 解释 |
|---|---|
| -n | 取消默认sed的输出,常与sed指令p一起使用 |
| -i | 直接将修改结果写入文件,不用-i,sed修改的是内存数据 |
| -e | 多次编辑,不需要管道符 |
| -r | 支持正则扩展 |
sed的内置命令字符用于对文件进行不同的操作功能
sed常用内置命令字符:
| sed的你指命令字符 | 解释 |
|---|---|
| a | append,对文本追加,在指定行后面添加一行/多行文本 |
| d | delete,删除匹配行 |
| i | insert,插入文本,在指定行前太哪家一行/多行文本 |
| p | print,打印匹配行的内容,通常p与-n |
| s/正则/替换内容/g | 匹配正则内容,然后替换内容(支持正则),结尾g表示全局匹配 |
sed匹配范围:
| 范围 | 解释 |
|---|---|
| 空地址 | 全文处理 |
| 单地址 | 指定文件某一行 |
| /pattern/ | 被模式匹配到的每一行 |
| 范围区间 | 10,20 十到二十行,10,+5 第十行向下五行,/pattern1/,/pattern2/ |
| 步长 | 12,表示从1开始,间隔为2的行;22,表示从2开始,间隔为2的行 |
浙公网安备 33010602011771号