文本处理之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

相关推荐

  • 创建目录树

    创建目录树 [wing@bogon ~]$ mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,\ sysconfig/network-scripts},\ lib/modules,lib64,proc,sbin,sys,tmp,usr/local{bin,sbin},\ var/{lock,…

    Linux干货 2017-07-24
  • linux常用的文件,目录管理命令总结和文件元数据信息含义

    常用的文件管理类命令及其具体用法 1.rmdir删除空目录 -p 递归删除多级空目录 这个命令不能删除非空目录 例如 [root@dxlcentOS ~]# rmdir /tmp/we rmdir: 删除 “/tmp/we” 失败: 目录非空 [root@dxlcentOS ~]# rmdir /tmp/we2 2.mkdir创建目录 常用选项-p 自动递归…

    Linux干货 2017-10-05
  • 马哥教育网络班19期+第八周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。    主要功能:    网桥是一个局域网与另一个局域网之间建立连接的桥梁,属于数据链路层的一种设备。    集线器是可以将一些机器连接起来组成一个局域网的设备。   &n…

    Linux干货 2016-06-26
  • Docker 简介

    Docker在现有云计算虚拟化中是非常火的一个项目,那么他和虚拟化有什么不同呢 从上图来看,好像和我们之前说到的虚拟化并没有什么不同,但这里需要说明的是在各guest主机上,是没有操作系统的,他们共用Host主机上的内核空间,只对用户空间进行了隔离。 因此在这种环境下我们不把他称为虚拟化而称作容器。 此种方式的实现主要基于了linux内核自带的两项技术,分别…

    2017-03-19
  • 【linux】正则表达式之grep、egrep、元字符

    正则表达式:     又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。是一类字符所书写的模式,其中许多字符(元字符)不表示其字面意义,而是表达控制或通配等功能。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符…

    Linux干货 2015-04-01
  • 日志SYSLOGD_OPTIONS 参数

    SYSLOGD_OPTIONS 参数

    Linux干货 2018-03-26