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

相关推荐

  • grep、find练习

    1.显示当前系统上root,fedora或user1用户的默认shell [root@study ~]# cat /etc/passwd|grep -E "^(root|fedora|user1)"|cut -d: -f7 /bin/bash /bin/bash /bi…

    Linux干货 2016-11-27
  • Ansible中文权威

    福利贴 运维神器 Ansible 本土化在际,除了每日分享,定期更新外,还有大虾不定期解惑,更多福利可关注  http://www.178linux.com/doc/ansible/  或 扫描二维码入( 372011984 )群关注.

    Linux干货 2015-08-13
  • 马哥教育网络班22期+第9周课程练习 忍者乱太郎喻成

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash declare -i user_can_not_login_count; declare -i user_can_login…

    Linux干货 2017-01-03
  • Linux下计划任务神器-Crontab

    作为系统运维人员都清楚,在Linux下定义重复性的任务,我们一般会采用crontab来进行:crontab这个指令所设置的工作将会循环的一直进行下去!可循环的时间为分钟、小时、每日、每月、每周。 crontab计划任务: 1)常见用法:crontab命令的作用和用法如下:描述:为每个用户维护周期性的计划任务文件用法:crontab [-u 用户][-l|-r…

    Linux干货 2016-07-22
  • 第三周作业

    1. 列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次则显示一次即可。 who | cut -d' ' -f1 | sort -u 2. 取出最后登录当前系统的用户的相关信息 grep  "$(who …

    Linux干货 2016-12-19
  • 马哥教育网络班22期+第五周课程练习

    1、显示当前系统上root、fedora或user1用户的默认shell; ~]# cat /etc/passwd |grep -E  "^(root|fedora|user1)" |awk -F: '{print $NF}'/bin/bash/bin/bash/bin/bash 2、找出/etc/rc.d/…

    Linux干货 2016-09-19

评论列表(1条)

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

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