Linux三剑客之sed命令

一.sed命令概述

Stream EDitor ,行编辑器

sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为”模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变除非你使用重定向存储输出.sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等

二.sed工具的用法:

sed [option]… ‘script’ inputfile…

 

常用选项:

-n 不输出模式空间内容到屏幕,即不自动打印

-e 多点编辑

-f /PATH/SCRIPT_FILE 从指定文件中读取编辑脚本

-r 支持使用扩展正则表达式

-i 原处编辑(慎用)

                                              blob.png

blob.png

script:

地址命令’

地址定界:

1) 不给地址:对全文进行处理

2) 单地址:#:指定的行

/pattern/:被此处模式所能够匹配到的每一行

blob.png

3) 地址范围

#,#

#,+#

blob.png

/pat1/,/pat2/

 

#,/pat1/

4)~:步进

1~2奇数行

2~2偶数行

blob.png

 

 

编辑命令:

d:删除模式空间匹配到的行

blob.png

blob.png

 

 

p:显示模式空间中的内容

blob.png

blob.png

a \text :在行后面追加文本;支持使用\n实现多行追加

blob.png

I \text :在行前面插入文本;支持使用\n实现多行插入

blob.png

c \text :替换行为单行或多行的文本

blob.png

w /path/somefile :保存模式匹配的行至指定文件

blob.png

 

r /path/somefile :读取指定文件的文本至模式空间中匹配到的行后

blob.png

=:为模式空间中的行打印行号

blob.png

!:模式空间中匹配行取反处理

blob.png

 

sed工具

s///:查找替换,支持使用其他分隔符,s@@@,s###

s/string1/string2

blob.png

替换标记:

g:行内全局替换

blob.png

p:显示替换成功的行

blob.png

w /PATH/TO/SOMEFILE: 将替换成功的行保存至文件中

blob.png

三.sed 高级编辑工具

h:把模式空间中的内容覆盖至保持空间中

 

H:把模式空间中的内容追加至保持空间中

g:从保持空间取出数据覆盖至模式空间

                                              blob.png

G:从保持空间取出内容追加至模式空间

blob.png

blob.png

x:把模式空间中的内容与保持空间中的内容进行互换

n:读取匹配到的行的下一行覆盖至模式空间

blob.png

blob.png

N:读取匹配到的行的下一行追加至模式空间

blob.png

d:删除模式空间中的行

blob.png

D:删除当前模式空间开端至\你的内容(不再传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed

 

 

原创文章,作者:Kartik,如若转载,请注明出处:http://www.178linux.com/33612

(0)
KartikKartik
上一篇 2016-08-15
下一篇 2016-08-15

相关推荐

  • linux基础命令: tr

    基础命令:  tr   tr命令 功能:删除和转换字符 语法:tr  [OPTION]…. SET1  [SET2] 参数: -d : 删除所有属于第一字符集的字符(删除某些特殊字符) -s : 把连续重复的字符以单独一个字符表示(删除空行很有用) 举例: 1.把小写字母转换为大写字母; cat &nbsp…

    Linux干货 2016-08-03
  • 马哥教育网络21期+第七周练习博客

    马哥教育网络21期+第七周练习博客 1、创建一个10G分区,并格式为ext4文件系统; 首先挂载一个新的硬盘使用fdisk /dev/sdb进入相应的磁盘空间划分一个10G的磁盘空间; Command (m for help): n Command action    …

    Linux干货 2016-08-22
  • OpenSSL 及创建私有CA

    OpenSSL 及创建私有CA OpenSSL OpenSSL,是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。 接下来对openssl基本命令进行介绍openssl 非常强大其子命令很多,这里只是对完成某些操作进行部分解释openssl 的基本格式为openss…

    2017-09-11
  • Linux终端类型

            终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。 [root@localhost ~]# ll /dev|egrep 'tty|pts' crw-rw-rw-. 1&nb…

    Linux干货 2016-10-14
  • 网络基础总结

    这周南老师出差了,由王老师给我们代课,这周我们主要学习了网络基础,相比着之前,主要是理论加理解。下面我总结一下。 处于21世纪的我们,互联网时代,网络在我们身边的各个角落,覆盖了我们的衣食住行,带来 很多方便;首先什么是网络, 家庭办公室,移动用户,总部,分支机构。。。都在用互联网相连着,省去了许多麻烦,时间,加快了办公效率; 资源共享的功能和优点:数据和应…

    2017-09-02
  • JoSQL内存数据库远程代码执行漏洞(含EXP)

    JoSQL全称SQL for Java Objects,提供了应用SQL语句的Java对象的集合的能力开发,JoSQL提供了搜索,排序,group等对Java对象的集合进行类似SQL的查询应该应用的功能。 例如,查找所有在2004年内修改过的html文件: SELECT * FROM   java.io.File WH…

    Linux干货 2015-03-06