在正常情况下,sed将待处理的行读入模式空间,脚本中的命令就一条接着一条的对该行进行处理,直到脚本执行完毕,然后该行被输出,模式空间请空;然后重复刚才的动作,文件中的新的一行被读入,直到文件处理完备。但是,各种各样的原因,比如用户希望在某个条件下脚本中的某个命令被执行,或者希望模式空间得到保留以便下一次的处理,都有可能使得sed在处理文件的时候不按照正常的流程来进行。这个时候,sed设置了一些高级命令来满足用户的要求。如果想要学习sed的高级命令,首先要了解如下两个缓存区:
1、模式空间(pattern space)的定义:模式空间就是一个缓存区,保存sed刚刚从输入端读取的。
2、暂存空间(hold space)的定义:暂存空间就是在处理模式空间数据的时候,临时缓存数据用的。
还有几个命令参数:
g: 将hold space中的内容拷贝到pattern space中,原来pattern space里的内容清除
G: 将hold space中的内容append到pattern space\n后
h: 将pattern space中的内容拷贝到hold space中,原来的hold space里的内容被清除
H: 将pattern space中的内容append到hold space\n后
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
下面咱们逐步理解上面的执行过程
一、让咱们来分析一下如下三条命令:
二、具体的操作
当然,命令:sed '1!G;h;$!d' tmp 也能有这个效果。
Linux Mint 20.2“Uma”中的新
EasyWSL工具将 Linux Docker 映
适用于 Linux 5.16 的新 Zst
适用于Linux的Windows子系统
Linux系统xlsatom命令如何使
阅读

阅读

阅读

阅读

阅读

阅读

阅读

阅读

阅读

阅读
Windows10 Insider Preview Build 20246将自动Linux发
Wine的最新版本改进了Linux系统上的Window
WSLg-现在可以直接在Windows10下启动Linux程序
Windows11 WSL2 的性能与裸机 Ubuntu Linux 相比
Linux Mint 20.2“Uma”中的新功能
您的PC不支持Win11也许是时候尝试Linux了
WindowsSubsystem for Linux(WSL)2对Windows10版本1
WindowsSubsystem for Linux(WSL)2对Windows10版本1903和1909的支持 根据客户......
阅读
Windows10 Insider Preview Build 20246将自动Linux发
微软已经向开发通道中的Windows Insiders宣布了Windows 10 Insider Prev......
阅读
Wine的最新版本改进了Linux系统上的Window
bull; Wine最近收到了对6.0版的更新。 bull; 此更新改进了使用Wine的......
阅读
WSLg-现在可以直接在Windows10下启动Linux程序
有趣的是,微软正在努力使Linux在Windows10下运行。我们都熟悉W......
阅读
Windows11 WSL2 的性能与裸机 Ubuntu Linux 相比
适用于 Linux 的 Windows 子系统既是一种启示,也是一场革命。现在......
阅读