linux sed 命令解释
来源:互联网 发布:dns 53端口 编辑:程序博客网 时间:2024/05/09 18:19
sed命令
流程: 从标准输入或文件中读入,一行一行读,读完以后处理,处理完一行后继续读下一行。
sed有两个空间,相当于缓冲,一个是pattern space,一个是hold space,pattern space是一个临时缓冲区,每次读入新行都会覆盖掉里面的内容;hold space相当于一个永久缓冲区,处理结束到读入下一行这期间内容不会被清除。但是处理流程可能会对两个缓冲区的内容造成影响。
几个参数:
d:清除pattern space的内容;
x:交换pattern space和hold space的内容;
g: 将hold space 的内容拷贝并覆盖到pattern space中,hold space自身保持不变;
G:将hold space 的内容拷贝并追加到pattern space中,hold space自身保持不变;
h:将pattern space 的内容拷贝并覆盖到hold space中,pattern space自身保持不变;
H:将pattern space 的内容拷贝并追加到hold space中,pattern space自身保持不变;
具体处理流程:
读入一行,去掉行尾的换行符后插入到pattern space中,处理,处理结束后输出pattern space的内容,再输出一个换行符。hold space在初始化的时候就含有一个换行符。为了方便理解,我们可以将换行符标记为\n。下面结合具体的实例来介绍sed的处理过程:
以text.txt做实验,内容如下(三行,分别为one,two和three):
$ cat test.txt
one
two
three
命令:
sed "H;g" test.txt
处理过程如下:
①读入第一行,并插入pattern space,此时两个缓冲区内容如下:
pattern space hold space------------- ---------------one <---hold space原来就有一个空行执行命令H(将pattern space 内容追加到hold space ),此时两个缓冲内容:
pattern space hold space------------- ---------------one <--- 空行 one执行命令g(将hold space内容拷贝到pattern space中):
pattern space hold space------------- --------------- <--- 空行 <--- 空行one one执行完毕,输出pattern space的内容:
<--空行one <---输出one后,sed会输出一个回车(不是空行),下次输出在one的下一行② 处理完毕,读入第二行,并插入到pattern space中,此时(注意hold space的内容不会自动清除):
pattern space hold space------------- ---------------two <--- 空行 one执行命令H(将pattern space 内容追加到hold space ),此时两个缓冲内容:
pattern space hold space------------- ---------------two <--- 空行 one two执行命令g后缓冲内容:
pattern space hold space------------- --------------- <--- 空行 <--- 空行one onetwo two执行完毕,输出pattern space的内容:
<--空行onetwo到目前为止,屏幕的总的输出是:
<--空行one <--空行onetwo③ 读入第三行后:
pattern space hold space------------- ---------------three <--- 空行 one two执行命令H后:
pattern space hold space------------- ---------------three <--- 空行 one two three执行命令g后:
pattern space hold space------------- --------------- <--- 空行 <--- 空行one onetwo twothree three处理结束输出pattern space的内容:
<--空行onetwothree整个命令处理完后,屏幕的输出是:
$ sed 'H;g' test.txt <--空行one <--空行onetwo <--空行onetwothree$ <---这是linux命令提示符
- linux sed 命令解释
- sed linux 命令
- linux sed命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed 命令详解
- linux sed命令详解
- linux sed命令
- linux sed命令
- linux sed命令详解
- linux sed 命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed命令
- 用s5pc100的GPIO模拟IIC
- leetcode Pascal's Triangle II
- 如何重启MYsql服务
- POA 1160 Post Office
- 利用Volley和JSON从服务器里加载数据
- linux sed 命令解释
- HTTP状态码
- WebService原理
- RaspberryPI基于XBain打造客厅媒体中心
- 别的程序员是怎么读你的简历的
- 求平方根的算法
- mysql中engine=innodb和engine=myisam的区别
- 基于2.6.35内核的无线网卡驱动的移植
- 李开复:大学四年应是这样度过