news 2026/2/6 12:43:51

13、Sed脚本高级流控制命令详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
13、Sed脚本高级流控制命令详解

Sed脚本高级流控制命令详解

1. 输入收集与处理脚本

在编写脚本时,有时需要收集输入并在匹配到特定模式后进行处理。例如,有一个脚本展示了收集输入并保存,直到匹配到另一个模式的机制。这个脚本中,第一个过程不会执行到底,因为此时还不需要输出;而第二个过程会执行到底,在开始收集下一段的行之前,清空模式空间和保持空间。

同时,该脚本还说明了如何使用寻址来设置排他性地址,即一行必须匹配其中一个地址。通过设置地址,可以处理输入中的各种异常情况,从而提高脚本的可靠性。

比如,若输入文件的最后一行不是空行,之前收集的自最后一个空行以来的所有行都不会输出。为解决这个问题,可以制造一个空行,让后续脚本中的空行处理程序能够匹配。具体做法如下:

${ /^$/!{ H s/.*// } }

这个程序必须放在之前展示的两个程序之前。寻址符号“$”仅匹配文件的最后一行。在这个程序内部,会测试非空行。如果是空白行,则无需处理;如果当前行非空,则将其追加到保持空间,然后使用替换命令在模式空间中创建一个空行。退出这个程序后,模式空间中会有一个空行,它会匹配后续处理空行的程序,该程序会添加HTML段落代码并输出段落。

2. 高级流控制命令

在sed的正常流控制中,有两个命令可以控制脚本的执行部分和时间,即分支(b)和测试(t)命令。这两个命令可以将脚本中的控制权转移到包含指定标签的行。如果未指定标签,控制权将传递到脚本的末尾。分支命令无条件转移控制权,而测试命令是条件转移,仅在替换命令更改了当前行时才会发生。

2.1 标签

标签是最多由七个字符组成的序列(

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/6 3:09:14

19、Awk 编程中的数组操作与应用

Awk 编程中的数组操作与应用 1. 日期解析与数组索引 在处理日期输入时,如果输入解析失败,我们会认为输入无效并退出程序。若成功解析, date[1] 会包含月份的数字。不过在使用 date[1] 作为数组 month 的索引之前,需要对其进行类型转换,通过加 0 来实现。因为 Awk …

作者头像 李华
网站建设 2026/2/3 15:38:38

22、Awk实用功能与脚本开发详解

Awk实用功能与脚本开发详解 1. 日期插入脚本 在编写格式化信函时,我们可能需要插入日期。以下脚本可以实现这一功能: To: Peabody From: Sherman Date: @date I am writing you on @date to remind you about our special offer.使用 awk 脚本 subdate.awk 处理输入文…

作者头像 李华
网站建设 2026/2/7 4:20:37

基于Langchain的智能体系统设计:以Chatchat为例

基于Langchain的智能体系统设计:以Chatchat为例 在企业知识管理日益复杂的今天,一个常见的痛点浮现出来:新员工入职后反复询问“年假怎么申请?”“报销流程是什么?”,而HR和IT部门却疲于应对重复问题。更深…

作者头像 李华
网站建设 2026/2/5 3:47:18

零基础搭建数字人对话系统:Linly-Talker镜像一键部署指南

零基础搭建数字人对话系统:Linly-Talker镜像一键部署指南 在虚拟主播24小时不间断带货、AI客服精准回应千人千问的今天,一个真正“能听、会说、有表情”的数字人早已不再是科幻电影里的设定。但对大多数开发者和内容创作者而言,构建这样一个…

作者头像 李华
网站建设 2026/2/6 10:40:41

Node.js性能优化实战:从单线程瓶颈到多核CPU的完美突破

Node.js性能优化实战:从单线程瓶颈到多核CPU的完美突破 【免费下载链接】node-interview How to pass the Node.js interview of ElemeFE. 项目地址: https://gitcode.com/gh_mirrors/no/node-interview 你的Node.js应用是否正在经历高并发下的莫名卡顿&…

作者头像 李华
网站建设 2026/2/5 17:13:30

ExoPlayer智能播放:构建Android媒体播放状态持久化系统

在当今移动媒体应用竞争激烈的环境中,用户体验已成为决定应用成败的关键因素。Android媒体播放的智能化水平直接影响着用户留存率和满意度。如何构建一个能够智能记忆播放状态、实现无缝续播的播放系统,是每个开发者都需要面对的技术挑战。 【免费下载链…

作者头像 李华