sed命令简单使用-显示

来源:互联网 发布:matlab矩阵卷积运算 编辑:程序博客网 时间:2024/05/08 10:02

本文将主要介绍一下sed的显示命令,样本文件为file,内容如下:

[work@ test_sed]$ cat file
one 1
two 2
three 3
one 1
two 2
two 2
three 3
[work@  test_sed]$ sed 1p file
one 1
one 1
two 2
three 3
one 1
two 2
two 2
three 3
[work@  test_sed]$ sed -n 1p file
one 1
[work@  test_sed]$ sed -n '1p' file
one 1
[work@  test_sed]$ sed -n "1p" file 
one 1

p命令是用来输出当前pattern space中的内容。1p命令用来显示第1行,大家可以观察到,sed命令如果加-n,那么将不输出其他行,否则,将输出其他行的同时,多输出一次第1行。另外,单引号、双引号、无引号三种模式下,输出结果是一样的,所以,我得出的结论是,引号添加与否,可根据个人喜好。由于见到的大部分sed命令,都用单引号标注,所以以后的命令中,都使用单引号。

 

显示第1到2行:

[work@ test_sed]$ sed -n '1,2p' file
one 1
two 2

显示第1到最后一行:
[work@ test_sed]$ sed -n '1,$p' file 
one 1
two 2
three 3
one 1
two 2
two 2
three 3

显示第2行到倒数第3行:

[work@ test_sed]$ sed -n '1!{:a;2,3!{P;N;D};N;ba}' file
two 2
three 3
one 1
two 2

该命令解释如下:1!{},表示除去第一行,执行花括号中的语句,:a为标签a,2,3!{}表示除去第2、3行执行括号中语句。命令整体的意思是,第1行不进行任何操作,将第2、3行加入到pattern space中,从第4行开始,执行P;N;D;N;ba命令,P是显示pattern space中第一行,N读取文件中的下一行追加到pattern space中,D是删除pattern space中的第一行,第二个N命令在第四行之后并没有发挥作用,因为D命令的man解释为“

Delete up to the first embedded newline in the pattern space.  Start next cycle,but skip reading from the input if there is still data in the pattern space.”,D命令后的命令将不会执行,而直接开始下一个循环。

该命令扩展为,显示第x到倒数第y行

sed -n '1,x-1!{:a;x,y+x-2!{P;N;D};N;ba}' file

原创粉丝点击