linux 之sed '1!G;h;$!d' file 的详细解释
来源:互联网 发布:软件项目总结 ppt 编辑:程序博客网 时间:2024/05/16 19:24
sed ‘1!G;h;$!d’ file(与tac file 命令执行结果相同,都是将行逆序输出) 这条命令的详细解释
1 sed简介
sed是面向流的行编辑器。所谓面向流,是指接受标准输入的输入,输出内容到标准输出上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。
具体过程如下: sed将处理的行读入到一个临时缓存区中(也称为模式空间pattern space),sed中的命令依次执行,直到所有命令执行完毕,完成后把该行发送到屏幕上,清理pattern space中的内容;接着重复刚才的动作,读入下一行,直到文件处理结束。
sed每处理完一行就将其从pattern space中删除,然后将下一行读入,进行处理和显示。处理完输入 文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。
2 sed执行流程图
3 什么是Pattern Space,Hold Space
Pattern Space相当于车间,sed把流内容在这里进行处理,Hold Space相当于仓库,加工的半成品在这里进行临时存储。
由于各种原因,比如用户希望在某个条件下脚本中的某个命令被执行,或者希望模式空间得到保存以便下一次处理,都有可能使得sed在处理文件的时候不按照正常的流程来进行。这个时候,sed设置了一些高级命令来满足用户的要求。
一些高级命令
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后
d: 删除pattern中的所有行,并读入下一新行到pattern中
D: 删除multiline pattern中的第一行,不读入下一行
4 图解sed ‘1!G;h;$!d’ file
1!G 第一行不执行G命令,从第二行开始执行
$!d 最后一行不删除
sed ‘1!G;h;$!d’ a.txt 在命令解释器中的执行的过程
下图为具体的执行过程
图中P代表Pattern Space,H代表Hold Space。绿色代表pattern space中的数据,蓝色代表hold space中的数据。
- linux 之sed '1!G;h;$!d' file 的详细解释
- sed之G、H、g、h使用
- sed之G、H、g、h使用
- sed命令n,N,d,D,p,P,h,H,g,G,x解析
- sed命令n,N,d,D,p,P,h,H,g,G,x解析
- sed命令n,N,d,D,p,P,h,H,g,G,x解析
- Sed命令n,N,d,D,p,P,h,H,g,G,x解析
- sed ‘1!G;h;$!d’ 解析——将行逆序输出
- sed之G、H、g、h使用,sed高级应用详解
- sed之n、h、x、N、G使用
- sed 的使用(四) -- h,H;g,G;x 模式空间和保持空间的操作
- show slave status \G 的详细解释
- Android中File.separator的详细解释
- linux sed 命令解释
- Sed 的man手册参数详细解释(二)
- Sed 的man手册参数详细解释(一)
- Sed 的man手册参数详细解释(三)
- Sed 的man手册参数详细解释(四)
- 数据类型笔记
- android 动态控制状态栏显示和隐藏的方法实例
- [数论][莫比乌斯反演][杜教筛] 51Nod 1220 约数之和
- 如何解决秒杀的性能问题和超卖的讨论
- ueditor Java版更改上传文件路径
- linux 之sed '1!G;h;$!d' file 的详细解释
- 饼状图向下钻取:自己实例,ajax后台获取数据
- ubuntu安装matlab 备忘录
- 关键字const的位置对定义指针常量的影响
- 'dict' object has no attribute 'iteritems'
- 对话系统综述
- NGUI按钮的介绍
- Redis数据库学习
- try catch finally中含有return时的处理步骤