文本处理之sed

 sed:是一种行编辑器,它在处理行时会把要处理的行读入模式空间中,处理的是模式空间的内容,一行一行的处理,然后把处理结果显示在屏幕中,不对原文做修改,除非强制重定向。

  好处:可同时编辑一个或多个文件,简化了对文件的反复操作。

sed用法:

  格式: sed [options ]…'script' inputfile

常用选项:

     -n:不把模式空间的的内容自动打印(只显示匹配行)

     -e:同时编辑多个命令时使用

     -f /PATH/TO/SCRIPT-FILE:从指定文件中读取编辑脚本

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

     -i:对原文件进行编辑

示例:

 -n选项

[root@myhost bin]# sed -n '10p' /etc/passwd      打印/etc/passwd文件中的第十行

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

  -e选项                             

[root@myhost bin]# cat file                 

lksjjkfl

kjdskjlkj

kdddllkfl

[root@myhost bin]# sed -e 's/l/L/' -e 's/d/D/' file     把file文件中每行第一个l换成L,d换成D

Lksjjkfl

kjDskjLkj

kDddLlkfl

  -i选项

[root@myhost bin]# sed -i '1d' file        删除file原文件中的第一行

[root@myhost bin]# cat file

kjdskjlkj

kdddllkfl

地址定界:

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

   2、单地址:

        #:指定的行

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

   3、地址范围:

        #,#:第几行到第几行

        #,+#:从第#行开始往后+#行

       /pat1/,/pat2/ :匹配模式1到模式2之间的行

       #,/pat1/:从第#行开始到匹配到模式1这行之间的行

   4、~:步进

     1~2:奇数行步进

     2~2:偶数行步进

编辑命令:

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

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

     a /text:在行后面追加文本,支持\n实现多行追加 

     i /text:在行前面追加文本,支持\n实现多行追加

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

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

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

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

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

 重要编辑命令:

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

     替换标记:

          g:行内全局替换

          p:显示替换成功的行

          w /path/to/somefile:将替换成功的行保存至文件中

          i:不区分大小写

示例:

[root@myhost bin]# cat file

kjdskjlkj

kdddllkfl

[root@myhost bin]# sed '3d' file              删除file文件中的第三行

kjdskjlkj

[root@myhost bin]# sed '/^$/a\hellow' file       在file文件中空行的后面添加一行hellow

kjdskjlkj

hellow

kdddllkfl

[root@myhost bin]# sed -n '/^$/=' file          显示file文件中空行的行号

2

[root@myhost bin]# sed 's/k/&KK/' file          把fiel文件中每行的第一个k替换为kKK

kKKjdskjlkj

kKKdddllkfl

[root@myhost bin]# sed 's/k/KK&/' file          把fiel文件中每行的第一个k替换为KKk

KKkjdskjlkj

KKkdddllkfl

sed工具的高级编辑命令

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

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

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

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

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

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

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

             d:删除模式空间中的行

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


sed命令练习题:

1、删除/etc/grub2.conf文件中所有以空白开头的行行首的 空白字符 ?

2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空 白字符的行的行首的#和空白字符 ?

3、在/root/install.log每一行行首增加#号 ?

4、在/etc/fstab文件中不以#开头的行的行首增加#号 ?

5、处理/etc/fstab路径,使用sed命令取出其目录名和基名 ?

6、利用sed 取出ifconfig命令中本机的IPv4地址 ?

7、统计centos安装光盘中Package目录下的所有rpm文件的 以.分隔倒数第二个字段的重复次数


解答:

1、操作及效果

1.png

2、操作及效果

2.png

3、操作

3.1.png

 前后效果对比

3.2.png

4、操作前

QQ截图20160813103257.png

 操作后效果

新.png

5、操作和效果

基名.png

6、操作效果

ifconfig.png

7、用两种方法

她她她.png

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

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

相关推荐

  • 文件查找命令之find

    文件查找命令之find   特点:实时查找,精确查找,由于find是全磁盘文件查找所有查找速度要比locate略慢一些。   find查找功能强大,下面主要介绍find查找条件的一个重要特性–德·摩根定律     德·摩根定律      非(A &&B)=(非A…

    Linux干货 2016-08-16
  • 程序包管理的前端工具YUM及案例一二

    程序包管理前端工具–YUM        yum:yellowdog update modifier        yum工具为CS架构 yum仓库(yum repository):yum repo   &n…

    Linux干货 2016-08-24
  • 基本网络设置

    我们在上网的时候会遇到各种各样的问题,比如有时候网络不通,没有ip地址,或者ip地址有冲突等等,这就需要我们懂得一些网络的配置,方便以后使用。基本网络配置:主机名,ip地址,网关,DNS服务器。1、 主机名的配置第一种方法:在配置文件修改Centos7版本:vim /etc/hostname 改过配置文件后需要使其生效,命令为hostname centos7…

    2017-09-09
  • btrfs文件系统——更加高级的文件系统

    Btrfs 文件系统: Btrfs ( B-tree ,Butter FS ,Better FS ) GPL ,Oracle公司在2007年研发,支持CoW(对文件快照),为了取代ext3,ext4,xfs 核心特点:          多物理卷支持:btrfs可由多个底层物理卷…

    Linux干货 2016-08-31
  • bash shell 循环语句的使用

    条件选择if语句       if语句是选择执行的,条件满足则执行,不满足则退出,if语句也可嵌套,就是if语句里面也可以在进行if语句 单分支 if 判断条件;then statement1 fi   双分支 if 判断条件;then 条件为真得分支 else 条件为假的分支 fi   …

    Linux干货 2016-08-18
  • RAID[Redundant Array of Independent Disks | 独立硬盘冗余阵列 ]

    前言 一个技术要知其然还要知其所以然 RAID 独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列 RAID的基本思想 其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到…

    Linux干货 2016-05-20