sed使用方法

  sed编辑器被称作流编辑器(stream editor)。流编辑器在处理数据之前基于预先提供的一组规则来编辑数据流。

一、命令格式

  sed options '"地址""编辑命令"' file

  常用选项:

    -n:静默模式,不显示模式内容空间中的内容;

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

    -i:修改原文件;

    -e:执行多个命令;

    -f file:将file中指定的命令添加到运行的命令中;

  常用编辑命令: 

    p:打印;

    s:文本替换;

    d:删除;

    i text:行上方插入,text即为插入的内容;

    a test:行下方插入,使用\n插入多行内容;

    c:修改行内容;

    r path/from/file:在指定位置合并两个文件;

    w path/to/somefile:把符合条件的行保存至指定的文件中;

二、应用实例

  1、替换文本

1.jpg

    上例中将/etc/issue文件中的字符“e”替换为数据“8”,但其结果只替换了每行的第一个匹配字符,可以使用替换标记来完成替换所有匹配字符的工作。

    1.1 替换标记

     格式:s/pattern/replacement/flags

      替换标记(flags):

       数字:表明新文本将替换第几处模式匹配的地方;

       g:表明新文体将替换所有模式匹配的地方;

       p:原来行的内容要打印出来;

       w file:将替换结果写到文件中。

     替换第二个匹配的内容:

5.jpg

     替换所有匹配的内容:

2.jpg

     只显示被替换过内容的行,通常与-n选项一起使用:

3.jpg

     将替换的内容输出到文件中:

4.jpg

     1.2 字符串分隔符

      在使用进行替换操作时,通常我们习惯使用"/"符号作为分隔符,如查"/"符号需要在模式中用到的话则需在使用"\"来进行转义,如下所示:

       sed 's/\/tmp/\/dev' /tmp/test

      上面的表达式看起来不容易阅读,可以通过修改字符串分隔符来解决此问题:

       sed 's%/tmp%/dev' /tmp/test

      上面的表达式使用"%"来作为字符串分隔符,依然可以达到替换效果。

      注:字符串分隔符可以使用任意字符来替换。

    2、地址

     sed编辑器中可以使用指定地址的方式来过滤想要进行操作的作。

     两种行寻址的形式:

      1、行的数字范围

      2、文本模式过滤

     格式:[address]command

     2.1 数字方式

6.jpg

     上例中只是在s命令前添加地址3,作用是将第3行的“:”全部替换为“,”。

7.jpg

     上例中指定了一个地址范围3到5行。

8.jpg

     上例中使用了"$"符号,表示将第3行至最后一行的所有“:”全部替换成为“,”。

    2.2 文本模式

     格式:/pattern/command

     模式必须使用"/"括起来。

9.jpg

     上例中只替换了有Kernel存在的行。

    2.3 多命令

     sed编辑器还支持多个命令同时执行。

10.jpg

     上例中对于有Kernel的行同时进行了两个地方的替换。

 3、删除

   删除命令d会将文本中的内容真的删除掉,只是在sed编辑器输出时会被删除掉。

11.jpg

  4、插入和追加文本

   插入命令i会在指定行的行前增加一个新行;

   追加命令a会在指定行的行后增加一个新行。

   格式:[地址]a/i 插入的内容

12.jpg

13.jpg

  5、修改行

   工作机制与插入和追加相同,格式也一样。

14.jpg

    将/etc/issue文件的第一行修改为指定内容。

  6、将替换结果写到文件

   格式:[address]w filename

15.jpg

  7、从文件中读取数据

   格式:[address]r filename

16.jpg

    将test文件中的内容插入到/etc/issue文件中。

  8、常用选项实例

17.jpg

    使用-e选项同时执行多个命令。

18.jpg

    使用文件中的命令来执行替换操作。

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

(0)
petmasterpetmaster
上一篇 2015-12-28
下一篇 2015-12-31

相关推荐

  • Nginx的安装及其一些配置

    nginx的编译安装    tar xf nginx-1.12.2.tar.gz   cd nginx-1.12.2     yum install pcre-devel  ./configure –help   groupadd -r nginx     useradd -g nginx -r nginx    id nginx     ./c…

    Linux干货 2017-10-25
  • shell脚本练习题

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信 息,包括主机名,IPv4地址,操作系统版本,内核版本, CPU型号,内存大小,硬盘大小。 #!/bin/bash ##编写脚本/root/bin/systeminfo.sh,显示当前主机系统信 息,包括主机名,IPv4地址,操作系统版本,内>核版本, C…

    Linux干货 2016-08-24
  • Shell脚本编程基础之一

      Linux为高效管理系统,提供了CLI命令行接口,供用户在命令提示符下输入命令,它有很多bash shell基础特,根据这些特性能够很灵活的使用命令,也支持使同时输入多个命令执行,命令之间用冒号分隔;但是要完成复杂多次重复性的操作,非常不便,系统管理工作变得很是繁忙,很难轻松完成工作任务;不过Linux的shell支持脚本编程,通过编写纯文本格…

    Linux干货 2016-08-15
  • shell脚本中if与case使用,查找文件locate与find的使用,压缩,解压及归档工具

    shell脚本中if与case使用 查找文件locate与find的使用 压缩,解压及归档工具 执行的循序  顺序执行  选择执行  循环执行 条件语句if if只是一个有含义的词,不能单独作为指令使用。 单分支      if 条件判断:then       &nbs…

    Linux干货 2016-08-18
  • N26-博客作业-week11

    1、详细描述一次加密通讯的过程,结合图示最佳。 加密过程 1、先用单向加密算法计算出数据的特征码 2、私钥加密特征码,并将结果附加在数据之后 3、生成一个临时的对称密钥,并使用对称密钥加密整段数据 4、获取对方的公钥,使用该公钥加密之前生成的临时对称密钥,并附加在数据之后 5、将所有数据发送给对方解密过程 1、先使用私钥解密加密的对称密钥 2、用对称密钥解密…

    2017-04-18
  • Linux系统中的防火墙iptables

    iptables/netfilter——Linux系统下的防火墙 基本原理 防火墙主要功能 工作于主机或者网络边缘,对进出本主机或本网络的报文进行匹配检测,对匹配到规则的报文进行于规则相对应的处理。 防火墙主要分类 按功能分类 主机防火墙网络防火墙 按构成分类 软件防火墙硬件防火墙 Linux防火墙软件iptables/netfilter(以后简称iptab…

    Linux干货 2017-06-13