本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32521
一、简介
- sed(Stream editor)是一个功能强大的文本流编辑器,主要用于对文本进行处理和转换。
- 它适用于自动化处理大量的文本数据,能够支持诸如查找、替换、删除、插入等文本编辑操作。
- sed是非交互式的,即它不会改变原始文件,除非显式指定。
二、sed基本用法与常用参数
- 语法结构:
sed [addr]x[options] 'expression' file
addr
:指定操作的行范围,可以是具体行号或匹配的模式。x
:表示编辑命令,如s
(替换)、d
(删除)、p
(打印)。options
:用于指定额外的操作,如-e
、-n
、-i
等。
2.1 sed常用选项与参数
表达式 | 描述 |
---|---|
-e | 在同一个命令中执行多个sed表达式。 |
-n | 静默模式,取消默认的自动输出行为,只有手动指定p(打印)时才会输出。 |
s | 用于替换文本,基本语法为sed ‘s/pattern/replacement/’ file |
-i | 直接修改文件,不输出到标准输出 |
-E | 扩展正则表达式(ERE) |
–debug | 调试模式,显示每一行的处理结果 |
2.2 pattern表达式
1. 行数与行数范围匹配
在 sed
中,可以指定单行或多行进行操作。
- 指定单行:匹配特定行进行编辑操作。
sed '20p' file.txt
- 指定行范围:通过行号范围操作一系列行。
sed '30,35d' file.txt
- 从某行到文件末尾:
sed '20,$d' file.txt
2. 正则表达式匹配
sed
可以使用正则表达式来匹配某一行或多行,/pattern/
表示匹配某个正则模式。
- 匹配包含模式的行:
sed '/pattern/p' file.txt
- 删除匹配行:
sed '/error/d' file.txt
- 替换匹配行:
sed '/hello/s/world/universe/' file.txt
3. 区间匹配
通过指定两个匹配模式的范围,sed
可以操作特定区间的行。格式为 //,//
。
- 指定模式的区间匹配:
sed '/start/,/end/p' file.txt
- 删除区间匹配的行:
sed '/BEGIN/,/END/d' file.txt
- 对区间进行替换:
sed '/start/,/end/s/foo/bar/' file.txt
4. 多个匹配条件
可以使用逗号 ,
来结合行号或正则表达式,以灵活匹配行数和模式。
- 按行号和正则结合:
sed '10,/pattern/d' file.txt
- 多行范围和模式结合:
sed '20,40s/foo/bar/' file.txt
2.3 sed action表达式
参数 | 描述 |
---|---|
p | 打印,通常结合-n参数:sed -n ‘2p’ |
s | 查找替换,s/REGEXP/REPLACEMENT/[FLAGS] |
d | 删除,删除前两行:sed ‘1,2d’ |
a | 追加 |
c | 改变 |
i | 插入内容到匹配行之前 |
e | 执行命令 |
分组匹配 与字段提取 | `sed 's#([0-9]) |
2.4 行数操作
- 打印特定行:
sed -n 2p
- 删除最后一行:
sed $d
2.5 s表达式
- s表示替换;
- s后面的追加字符可以为任意字符;
- g表示全局匹配;
- &表示匹配内容。
2.6 反向引用
- 使用
()
对数据进行分组; - 使用
\1 \2
反向引用分组。
推荐学习
【霍格沃兹测试开发】7天软件测试快速入门带你从零基础/转行/小白/就业/测试用例设计实战
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)
【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试
【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff
【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享
【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装
【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?
【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!
【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我
【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化
【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试
【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer !
【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置
【霍格沃兹测试开发】如何用Postman 做接口测试,从入门到实战/ 接口抓包(最新最全教程)