N25第八周学习总结_sed命令详解

sed使用详解

大纲:

1、    sed是什么

2、    为什么要使用sed

3、    sed使用方法

4、    sed详解

 

正题:

1、    sed是什么

sed全名Stream Editor,是Linux下一条命令,也是文本处理三剑客之一的流编辑器,主要对行进行处理。

 

2、    为什么要使用sed

sed功能强大,使用灵活,而且支持正则表达式,不仅可对数据进行删除、替换、修改、插入,而且可以通过地址定界来对范围内的行进行编辑,大大提高了工作效能,省去手工操作的繁琐与失误率。

3、    sed使用方法

sed 主要由四部分组成:命令主体、选项、处理方式、待处理的文件,使用格式为:

        sed  [OPTIONS]  ‘SCRIPT’ 
FILE

4、    sed详解

      N25第八周学习总结_sed命令详解          

sed命令的使用格式:

  sed  [OPTION]  ‘SCRIPT’ 
FILE

 

OPTION:

     -n:不输出模式空间中未被匹配和默认输出的内容至屏幕(只输出匹配的内容)

     -e
script
:实现多点编辑,即可增加多个’script’ 例如:

           sed -n  -e ‘/etc/s/fstab/FSTAB/’ -e ‘1~2p’ /etc/fstab

     -f
/PATH/SED_CRRIPT_FILE
:从其他文件中读取编辑命令,即读取script

           注:写有script的文件中不需要单引号,直接写script。

     -r:支持使用扩展表达式:默认只能用基本正则,使用-r后可以用扩展正则。

     -i:直接编辑原文件,慎用。

 

‘SCRIPT’:

      SCRIPT由两部分组成,地址定界+编辑命令;

          

           地址定界:主要来判定处理的行范围,默认为全部

(1)   空地址:对全文进行处理

(2)   单地址:

#:指定行

/pattern/:被此模式所匹配到的每一行;

(3)   地址范围:

#, # :         从指定的行数到指定的行数;

#, +# :    从指定的行数到几行之后;

#, /parttern/ : 从指定的行数到匹配到此模式的行;

/parttern1/, /parttern2/ : 从匹配到1的模式的行到匹配到2的模式的行;

(4)   步进:

x~y:设x为起点,每次向前移动y步;

      例如:

1~2 : 所有的奇数行;

2~2 : 所有的偶数行;

      

                 编辑命令:主要作用是针对匹配到的数据该如何处理;

 

                      文本的删除和显示:

                      d:删除(行),主要针对行的删除;

                      p:显示模式空间的内容,如果不加选项-n,匹配到模式空间的内容会重复显示;

 

                      文本的添加和替换:

                            a
\text:
在指定或匹配行后面追加文本“text”,
支持使用\n实现多行追加

                             i \text: 在指定或匹配行前追加文本“text”,支持使用\n实现多行追加;

                            c \text:  将指定或匹配的行替换为“text”,

                            s/// : 查找替换(行内编辑),支持基本正则表达式,可将查找出来的数据段替换、更改、删除,其分隔符可自行设定,常用有:s@@@, s###;

                                  g:全局替换;默认只会替换匹配到的第一段数据;

                                  w: /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;

                                  p:显示替换成功的行;

                                       注:使用方法同vim中命令模式中的查找替换。

 

                      文本的导入与导出:

                            w
/PATH/TO/SOMEFILE :
保存模式空间匹配到的行到指定文件中;

r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;

 

                      其他:

                            =:为模式匹配到的行打印行号;

                            !:条件取反,使用方法是在编辑命令前,没有空格:

                                       sed
‘1~3!p’ /etc/fstab      

 

      综合实战:

以上是sed各参数的详细说明,只用通过各种案例才能将sed命令牢牢掌握,以下是一些常用的使用方式:

 

                 1、删除/boot/grub2/grub.cfg文件中所有以#开头的行的行首的所有#号与空白字符;

            N25第八周学习总结_sed命令详解

 

      2、删除/etc/fstab/文件中的偶数行,并且在没有#号的奇数行首加#;

            N25第八周学习总结_sed命令详解

 

3、输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname;

         echo /etc/httpd/conf/
|sed ‘s@[^/]\+/*$@@’

/etc/httpd/

 

 

     4、   将nologin 的用户信息导出至 /root/nologin.txt

N25第八周学习总结_sed命令详解

 

 

   5、  将/etc/fstab中所有以#开头的行更改为#magedu.com

N25第八周学习总结_sed命令详解

原创文章,作者:N25_韩奇洋,如若转载,请注明出处:http://www.178linux.com/70097

赞 (0)
N25_韩奇洋N25_韩奇洋
上一篇 2017-02-26 14:12
下一篇 2017-02-26 17:51

相关推荐

  • N22-第七周作业

    1、创建一个10G分区,并格式为ext4文件系统; # fdisk /dev/sda n p 3 w # partx -a /dev/sda  # partx -a /dev/sda # mke2fs -t ext4 -b&nbs…

    Linux干货 2016-10-09
  • 将两个局域网用openvpn连接起来

    考虑到我们做集群的时候需要用到可能有20台机器,可能我的要求跟别人的不一样的,我需要做20台左右的集群,不仅仅是会,而且需要非常熟练的搭建,最后通过脚步一键自动化部署安装。 目前我有两台电脑,一台可以运行7台,另一台可以运行12台左右,刚好可以满足的我的要求,但是我两台电脑都是设置的nat模式的网络,为什么我非要配置nat模式呢,根据集群架构思想,为了保证架…

    Linux干货 2017-05-01
  • shell脚本基础

    shell脚本基础 基本介绍 Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高。换一种说法也就是,shell script是利用shell的功能所写的一个程序,这个程序是使用…

    2017-07-01
  • Linux 第八天: 练习和作业

    Linux 第八天: (08月09日) 练习和作业       1删除/etc/grub2.cfg所有以空白开头的行行首空白字符 sed 's#^[[:space:]]\+##' /etc/grub2.cfgsed -r 's@^[[:space:]]+@@' /etc/grub2.cfg…

    Linux干货 2016-08-11
  • 概述Windows2003的卷影副本

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/157940      卷影副本,也就是Volume Shadow Server简单来讲,卷影副本(或称为VSS)可以简单…

    Linux干货 2015-03-25
  • 开源堡垒机-01-JumpServer的安装

    前段时间曾经用过JumpServer帮助一个客户完成了他的关于堡垒机的需求,由于当时赶进度,没来得及将整个过程记录和完善,现在抽时间慢慢整理下。 1)JumpServer的介绍 Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。 支持常见系统: Cent…

    Linux干货 2016-07-22

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-15 01:11

    赞~~思路比较清晰~后面操作的部分建议使用markdown来展示会更好~~加油