如何使用sed同时操作指定单行与连续行范围?
混合指定单个行+连续行范围的sed正确命令
针对需要打印file.txt第1行、以及第4到5行内容的需求,可直接运行的命令为:sed -n '1p;4,5p' file.txt
实现逻辑
sed的脚本块本身就支持多规则并行,不需要专门的"与"类连接词:
- 单引号包裹的执行块内,所有独立操作规则用分号
;分隔即可 1p规则负责命中第1行、执行打印操作4,5p规则负责命中第4-5行的连续范围、执行打印操作- sed执行时会依次遍历所有规则,所有被规则命中的行都会触发对应操作
示例验证
用给定的file.txt内容执行上述命令,输出结果为:
hello there this
完全匹配需求。
通用使用提示
这种分号分隔的写法没有规则类型限制,可适配任意混合的行选择场景:
- 多单个行选择:比如要打印第2行、第5行,命令为
sed -n '2p;5p' file.txt - 多连续范围选择:比如要打印第2-3行、第6行到文件末尾,命令为
sed -n '2,3p;6,$p' file.txt - 混合规则:可以同时拼接单行选择、连续范围选择、正则匹配行选择,仅需用分号分隔即可
注意:必须搭配
-n参数关闭sed默认的全量行输出,否则会出现所有行被重复打印的冗余结果。
内容的提问来源于stack exchange,提问作者moth
相关产品推荐
相关产品推荐

