综合总结:详解 Linux sed 多行处理
在正常情况下,sed将待处理的行读入模式空间,脚本中的命令就一条接着一条的对该行进行处理,直到脚本执行完毕,然后该行被输出,模式空间请空;然后重复刚才的动作,文件中的新的一行被读入,直到文件处理完备。但是,各种各样的原因,比如用户希望在某个条件下脚本中的某个命令被执行,或者希望模式空间得到保留以便下一次的处理,都有可能使得sed在处理文件的时候不按照正常的流程来进行。这个时候,sed设置了一些高级命令来满足用户的要求。如果想要学习sed的高级命令,首先要了解如下两个缓存区:
1、模式空间(pattern space)的定义:模式空间就是一个缓存区,保存sed刚刚从输入端读取的。
2、暂存空间(hold space)的定义:暂存空间就是在处理模式空间数据的时候,临时缓存数据用的。
还有几个命令参数:
g: 将hold space中的内容拷贝到pattern space中,原来pattern space里的内容清除
G: 将hold space中的内容append到pattern spacen后
h: 将pattern space中的内容拷贝到hold space中,原来的hold space里的内容被清除
H: 将pattern space中的内容append到hold spacen后
x: 交换pattern space和hold space的内容
比如咱们想要倒排一个文件的内容,文件如下:
[qiu.li@l-tdata1.tkt.cn6 ~]$ cat tmp 1-line 2-line 3-line
执行如下命令:
[qiu.li@l-tdata1.tkt.cn6 ~]$ sed '2,$G;h;$!d' tmp 3-line 2-line 1-line
下面咱们逐步理解上面的执行过程
一、让咱们来分析一下如下三条命令:
- 2,$G:从第二行到最后一行执行G命令
- h:执行h命令
- $!d:删除除了最后一行的所有行
二、具体的操作
- 扫描到第一行
- 将1-line放入模式空间;此时模式空间还是1-line;
- 直接执行h命令,此时暂存空间是1-line;
- 执行d命令,删除了模式空间仅有的一行数据,删除之后,模式空间是空的
- 扫描到第二行
- 将2-line放入模式空间
- 执行G命令,将暂存空间的1-line添加到模式空间2-line的后面,此时模式空间是2-linen1-line;
- 执行h命令,此时暂存空间的内容是2-linen1-line;
- 执行d命令,模式空间被清空
- 扫描到第三行
- 将3-line放入模式空间,
- 执行G命令,将暂存空间的2-linen1-line添加到模式空间3-line的后面,此时模式空间是3-linen2-linen1-line;
- 执行h命令,此时暂存空间的内容是3-linen2-linen1-line;
- 不执行$!d;
- 直接输出 3-linen2-linen1-line
当然,命令:sed '1!G;h;$!d' tmp 也能有这个效果。
以上是综合总结:详解 Linux sed 多行处理的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Linux 命令行界面提供了丰富的文本处理工具,其中最强大的工具之一是 sed 命令。sed 是 Stream EDitor 的缩写,是一个多功能工具,允许对文本文件和流进行复杂的处理。 什么是 Sed? sed 是一款非交互式文本编辑器,它操作管道输入或文本文件。通过提供指令,您可以让它修改和处理文件或流中的文本。sed 最常见的用例包括选择文本、替换文本、修改原始文件、向文本添加行或从文本中删除行等操作。它可以在 Bash 和其他命令行 shell 中从命令行使用。 Sed 命令语法 sed

Discover Pillet:一种复古的,开源的迷你计算机 寻找将经典风格与尖端技术融合的迷你计算机? Meet Pilet是一个由Raspberry Pi 5的模块化的开源奇迹。拥有7小时的电池寿命

Linux:现代计算的基石,从智能手机到超级计算机,无所不能。多年来,Linux内核的规模和复杂性显着增长。截至2025年1月,Linux内核源代码大约包含4000万行代码!这是开源、社区驱动项目历史上最伟大的成就之一。 本文将讨论Linux内核源代码行数的指数级增长,其原因以及如何自行检查当前行数。 目录 - Linux内核的历程 统计Linux内核源代码的行数 只统计C和头文件 内核增长的指数趋势 验证历史Linux内核行数 总结 Linux内核的历程 自1991年Linus Tor

有效地计数Linux中的文件和文件夹:综合指南 知道如何快速计算Linux中的文件和目录对于系统管理员和管理大型数据集的任何人至关重要。本指南使用简单命令l演示

Liquorix内核:提升Linux系统性能的利器 Linux以其灵活、安全和高性能而闻名,成为开发人员、系统管理员和高级用户的首选操作系统。然而,通用Linux内核并非总是能满足寻求最大性能和响应速度用户的需求。这就是Liquorix内核发挥作用的地方——一个针对性能优化的替代方案,有望增强您的Linux系统。本文将探讨Liquorix内核是什么,为什么您可能想要使用它,以及如何安装和配置它以充分发挥系统的性能。 Liquorix内核详解 Liquorix内核是一个预编译的Linux内核,专为

有效管理用户帐户和组成员资格对于Linux/UNIX系统管理至关重要。 这样可以确保适当的资源和数据访问控制。 本教程详细介绍了如何将用户添加到Linux和Unix系统中的多个组中。 我们

System76 Meerkat:强大的迷你PC 寻找一台功能强大但节省空间的计算机? 与System76结识Meerkat Mini PC!这个紧凑型强国非常适合整理台式机和苛刻的任务。 目录 - 紧凑的设计,令人印象深刻

在当今数字时代,数据不仅仅是信息,更是我们生活的一部分。从照片和文档到敏感的个人信息,我们的数据代表着我们的回忆、工作和兴趣。虽然云存储服务广泛可用,但它们通常伴随着隐私问题、订阅费用和定制限制。这就是在Ubuntu上构建个人云作为强大替代方案的意义所在,它使您可以完全控制自己的数据,并灵活地根据需要进行自定义和扩展。 本指南将引导您设置基于Ubuntu的个人云,使用Nextcloud作为主要应用程序,并确保您的设置安全可靠。 为什么在Ubuntu上构建个人云? Ubuntu是最流行的Linux
