zoukankan      html  css  js  c++  java
  • Sed

    sed工作原理及功能
      sed:Stream EDitor(流编辑器)
      工作原理:
        sed是一种流编辑器(行编辑器),一次处理一行内容。在处理时逐行将要处理的行存储在临时缓冲区当中,该缓冲区称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后将缓冲区的内容输出到标准输出(屏幕)。接着处理下一行,重复完成相同的操作直到文件末尾。sed处理的整个过程当中,原始文件中的内容并没有改变,除非使用重定向来存储处理后的结果。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等

      同vim和grep的区别:
      vim是一种交互式的文本编辑工具
      sed是一种非交互式的文本编辑器(通过给定条件自动的逐行去处理文件)
      grep虽然也是一种流式的文本处理工具,但grep是用来检索条件关键字的,而sed却是搜索匹配处理文本工具

    功能:
      sed 所具有的功能:数据的替换,删除,新增等,这里的数据可以是一些关键字,也可以是一些特定的行

    语法结构及常用选项
     sed语法结构
     sed [OPTION]... 'script' [Input-File]...
       script 地址定界和编辑命令
    常用选项:
      -n 不输出模式空间内容至屏幕(静默模式)
      -e script 多点编辑,指定多脚本编辑
        sed -e '1d' -e '2d' -e '5d' books.txt
      -f /PATH/TO/SCRIPT_FILE  从指定文件中读取编辑脚本并运行(每行一个编辑命令)
      -r 支持使用扩展正则表达式
      -i 原处编辑(直接修改原始文件)
    注意:
      模式空间中的内容,默认都会在屏幕上显示出来
      sed在处理时,把当前要处理的行存储在"模式空间"中,然后处理模式空间中的内容,如果没有被模式空间中指定的模式匹配到,就将内容(没发生改变)输出到标准输出(屏幕);如果被模式空间中指定的的模式匹配到,就执行对匹配到模式内容对应的编辑命令操作,然后将操作后的结果输出到标准输出;

     地址界定(抽取的域)
      默认情况下,在sed编辑器中使用的命令会作用于文本数据的所有行。如果只想将命令作用于特定行或某些行,就可以用使用地址定界
      不给地址:对全文进行处理;
      单地址:
        #  表示数字,指定的行
        $  最后一行
        /pattern/ 被此处模式所能够匹配到的每一行(正在表达式)
      地址范围:
        #,#  从#行到#行
        #,+n 从#行开始,一直到向下的n行
        /pat1/,/pat2/  从第一次被pat1匹配到的行开始,到第一次被pat2匹配到的行结束,中间的所有行
        #,/pat1/  从#行开始,到第一次被pat1匹配到的行结束,中间的所有行
      ~:步进,指定起始行及步长。
        1~2  所有奇数行(从第1行开始,步进为2)
        2~2  所有偶数行(从第2行开始,步进为2)

      编辑命令
      sed的编辑命令
      d 删除模式空间匹配的行;
      p 显示模式空间中被地址定界匹配到的行的内容
      a ext 会在指定行后增加一个新行;支持使用 实现多行追加
      i ext 会在指定行前增加一个新行;支持使用 实现多行插入
      c ext 把指定到的行替换为此处指定的文本“text”
      w /path/to/somefile  保存模式空间中匹配到的行至指定文件当中
      r /path/from/somefile 读取指定文件的内容至当前文件被模式匹配到的行的下方;实现文件合并
      y/inchars/outchars/  转换命令
        转换命令会对 inchars 和 outchars 值进行一对一的映射。 inchars 中的第一个字符会被转换为 outchars 中的第一个字符,第二个字符会被转换成 outchars 中的第二个字符。这个映射过程会一直持续到处理完指定字符。如果 inchars 和 outchars 的长度不同,则sed编辑器会产生一条错误消息。你无法限定只转换在特定地方出现的字符

      =  输出模式空间中匹配到的行的行号
      !  条件取反,非模式空间中匹配到的行
      s/// 查找替换,分隔符可自行指定例如:s@@@或s###等
        替换标记:
        Num 第Num次查找到的字符串被替换(Num为数字例如2,就是第2处匹配到的字符串被替换)
        g 全局替换(所有查找到的字符串全部替换)
        w /PATH/TO/SOMEFILE 将替换成功后的结果保存至指定文件中
        p 只显示被模式匹配到并替换成功后的行
        & 代表前面模式查找到的字符串(前向引用)
    注意:这里添加或替换的内容,只是在模式空间中改变,原文件并没有被修改,如果要修改源文件需加 -i 选项(慎用)

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

    删除以UUID开头的行,被模式 /^UUID/匹配到的每一行

    删除奇数行

    -n不显示模式空间中的内容

    p打印模式空间中的内容
    逐行读取文件内容到模式空间中,默认无论是否被模式匹配都会被显示出来, p命令是把模式空间中匹配到的行显示出来,所以第三行还会再显示2遍

    -n选项指明不显示模式空间中的内容,p命令显示模式匹配到的行(只显示第3行)

    演示:
    1、d删除模式空间匹配的行
    [root@centos7 ~]# cat -n /etc/fstab
    1
    2 #
    3 # /etc/fstab
    4 # Created by anaconda on Sun Nov 6 10:30:14 2016
    5 #
    6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
    7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    8 #
    9 UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    10 UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    11 UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    12 UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0
    [root@centos7 ~]# cat -n /etc/fstab > sed.txt

    # 删除1到5行的内容
    [root@centos7 ~]# sed '1,5d' sed.txt
    6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
    7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    8 #
    9 UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    10 UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    11 UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    12 UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

    # 删除以UUID开头的行,被模式 /^UUID/ 匹配到的每一行
    [root@centos7 ~]# sed '/^UUID/d' /etc/fstab

    #
    # /etc/fstab
    # Created by anaconda on Sun Nov 6 10:30:14 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #

    # 删除奇数行
    [root@centos7 ~]# sed '1~2d' sed.txt
    2 #
    4 # Created by anaconda on Sun Nov 6 10:30:14 2016
    6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
    8 #
    10 UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    12 UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

    2、p打印模式空间中的内容
    # -n 不显示模式空间中的内容,
    [root@centos7 ~]# sed -n '3d' sed.txt

    # 首先显示模式空间中没有被匹配到的行(偶数行),然后再显示被匹配到的指定的行,执行p命令打印出第3行,
    # 因为默认模式空间中的内容都会被显示出来,所以第三行还会再显示一遍。对比d命令,是把模式空间中匹配到的行
    # 删除,就显示不出来了
    [root@centos7 ~]# sed '3p' sed.txt
    1
    2 #
    3 # /etc/fstab
    3 # /etc/fstab
    4 # Created by anaconda on Sun Nov 6 10:30:14 2016
    5 #
    6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
    7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    8 #
    9 UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    10 UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    11 UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    12 UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

    # 首先,-n选项指明不显示模式空间中的内容,然后命令p指明显示指定的行
    [root@centos7 ~]# sed -n '3p' sed.txt
    3 # /etc/fstab

    3、i ext,a ext和c ext:在行后面追加文本;支持使用 实现多行追加
    #默认会显示模式空间中的所有内容(因为没有对第3行执行d命令,所以也会显示出来),然后再在行前插入一行
    [root@centos7 ~]# sed '3i ew lines' sed.txt
    1
    2 #
    new lines
    3 # /etc/fstab
    4 # Created by anaconda on Sun Nov 6 10:30:14 2016
    5 #
    6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
    7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    8 #
    9 UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    10 UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    11 UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    12 UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

    # 在行后插入一行
    [root@centos7 ~]# sed '3a ew lines' sed.txt
    1
    2 #
    3 # /etc/fstab
    new lines
    4 # Created by anaconda on Sun Nov 6 10:30:14 2016
    5 #
    6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
    7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    8 #
    9 UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    10 UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    11 UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    12 UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

    # 实现多行追加
    [root@centos7 ~]# sed '3a ew lines taotao xiuxiu' sed.txt
    1
    2 #
    3 # /etc/fstab
    new lines
    taotao
    xiuxiu
    4 # Created by anaconda on Sun Nov 6 10:30:14 2016
    5 #
    6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
    7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    8 #
    9 UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    10 UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    11 UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    12 UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

    #在匹配的模式后增加内容
    [root@centos7 ~]# sed '/^UUID/a # add new line base on UUID' /etc/fstab

    #
    # /etc/fstab
    # Created by anaconda on Sun Nov 6 10:30:14 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    # add new line base on UUID
    UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    # add new line base on UUID
    UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    # add new line base on UUID
    UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0
    # add new line base on UUID


    # 将指定的行替换为此处的“text”
    [root@centos7 ~]# sed '/^UUID/c # add new line base on UUID' /etc/fstab

    #
    # /etc/fstab
    # Created by anaconda on Sun Nov 6 10:30:14 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    # add new line base on UUID
    # add new line base on UUID
    # add new line base on UUID
    # add new line base on UUID

    4、w /path/to/somefile:把指定的内容另存至/path/to/somefile路径所指定的文件中。
    [root@centos7 ~]# sed -n '/^[^#]/p' /etc/fstab
    UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

    [root@centos7 ~]# sed '/^[^#]/w /tmp/fstab.new' /etc/fstab

    #
    # /etc/fstab
    # Created by anaconda on Sun Nov 6 10:30:14 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

    [root@centos7 ~]# cat /tmp/fstab.new
    UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

    5、r /path/from/somefile:在文件的指定位置插入另一个文件的所有内容,完成文件合并。
    [root@centos7 ~]# sed '3r /etc/issue' sed.txt
    1
    2 #
    3 # /etc/fstab
    S
    Kernel on an m

    Mage Education Learning Services
    http://www.magedu.com

    4 # Created by anaconda on Sun Nov 6 10:30:14 2016
    5 #
    6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
    7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    8 #
    9 UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    10 UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    11 UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    12 UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

    6、=为模式空间中的行打印行号
    [root@centos7 ~]# sed '/^UUID/=' /etc/fstab

    #
    # /etc/fstab
    # Created by anaconda on Sun Nov 6 10:30:14 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    9
    UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    10
    UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    11
    UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    12
    UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

    7、!模式空间中匹配行取反处理
    # 删除非#号开头的行,注意“!”的位置
    [root@centos7 ~]# sed '/^#/!d' /etc/fstab
    #
    # /etc/fstab
    # Created by anaconda on Sun Nov 6 10:30:14 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #

    8、s///查找替换,及多点编辑
    [root@centos7 ~]# cat /etc/fstab
    #
    # /etc/fstab
    # Created by anaconda on Sun Nov 6 10:30:14 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0


    # 删除/etc/fstab文件中所有以#开头的行的行首的#及#后面所有的空白字符
    [root@centos7 ~]# sed 's@^#[[:space:]]*@@' /etc/fstab

    /etc/fstab
    Created by anaconda on Sun Nov 6 10:30:14 2016

    Accessible filesystems, by reference, are maintained under '/dev/disk'
    See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

    UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0


    # 多点编辑,同时把UUID开头的行删除
    [root@centos7 ~]# sed -e 's@^#[[:space:]]*@@' -e '/^UUID/d' /etc/fstab


    /etc/fstab
    Created by anaconda on Sun Nov 6 10:30:14 2016

    Accessible filesystems, by reference, are maintained under '/dev/disk'
    See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

    9、&和g的用法:

    练习题:
    1、删除/etc/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符
    # 使用查找替换
    [root@centos7 ~]# sed 's@^[[:space:]]+@@' /etc/grub2.cfg
    #
    # DO NOT EDIT THIS FILE
    #
    # It is automatically generated by grub2-mkconfig using templates
    # from /etc/grub.d and settings from /etc/default/grub
    #

    ### BEGIN /etc/grub.d/00_header ###
    set pager=1

    if [ -s $prefix/grubenv ]; then
    load_env
    fi
    if [ "${next_entry}" ] ; then
    set default="${next_entry}"
    set next_entry=
    save_env next_entry
    set boot_once=true
    else
    set default="${saved_entry}"
    fi

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

    #
    # /etc/fstab
    # Created by anaconda on Sun Nov 6 10:30:14 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0


    # 注意这里的空白字符可以出现任意次(0次,1次或多次)
    [root@centos7 ~]# sed 's@^#[[:space:]]*@@' /etc/fstab

    /etc/fstab
    Created by anaconda on Sun Nov 6 10:30:14 2016

    Accessible filesystems, by reference, are maintained under '/dev/disk'
    See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

    UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0
    UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0
    UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0
    UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

    3、在/root/install.log每一行行首增加#号
    [root@CentOS6 ~]# sed 's@^@#@' /root/install.log
    #Installing words-3.0-17.el6.noarch
    #Installing centos-indexhtml-6-2.el6.centos.noarch
    #Installing ql2400-firmware-7.03.00-1.el6_5.noarch
    #Installing iwl5000-firmware-8.83.5.1_1-1.el6_1.1.noarch
    #Installing ql2100-firmware-1.19.38-3.1.el6.noarch
    #Installing ivtv-firmware-20080701-20.2.noarch
    #Installing libertas-usb8388-firmware-5.110.22.p23-3.1.el6.noarch
    #Installing xorg-x11-drv-ati-firmware-7.6.1-2.el6.noarch
    #Installing ql2500-firmware-7.03.00-1.el6_5.noarch
    #Installing atmel-firmware-1.3-7.el6.noarch
    #Installing zd1211-firmware-1.4-4.el6.noarch
    #Installing iwl4965-firmware-228.61.2.24-2.1.el6.noarch
    #Installing rt61pci-firmware-1.2-7.el6.noarch
    #Installing iwl3945-firmware-15.32.2.9-4.el6.noarch
    #Installing ql2200-firmware-2.02.08-3.1.el6.noarch
    #Installing rt73usb-firmware-1.8-7.el6.noarch
    #Installing ipw2100-firmware-1.3-11.el6.noarch
    #Installing ql23xx-firmware-3.03.27-3.1.el6.noarch

    4、在/etc/fstab文件中不以#开头的行的行首增加$号
    [root@CentOS6 ~]# cat /etc/fstab
    #
    # /etc/fstab
    # Created by anaconda on Sun Nov 6 11:54:11 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/vg0-root / ext4 defaults 1 1
    UUID=493db72e-4b0d-4e2a-82fa-5e002f0bd667 /boot ext4 defaults 1 2
    /dev/mapper/vg0-usr /usr ext4 defaults 1 2
    /dev/mapper/vg0-var /var ext4 defaults 1 2
    /dev/mapper/vg0-swap swap swap defaults 0 0
    tmpfs /dev/shm tmpfs defaults 0 0
    devpts /dev/pts devpts gid=5,mode=620 0 0
    sysfs /sys sysfs defaults 0 0
    proc /proc proc defaults 0 0

    [root@CentOS6 ~]# sed 's@^[^#]@$&@' /etc/fstab

    #
    # /etc/fstab
    # Created by anaconda on Sun Nov 6 11:54:11 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    $/dev/mapper/vg0-root / ext4 defaults 1 1
    $UUID=493db72e-4b0d-4e2a-82fa-5e002f0bd667 /boot ext4 defaults 1 2
    $/dev/mapper/vg0-usr /usr ext4 defaults 1 2
    $/dev/mapper/vg0-var /var ext4 defaults 1 2
    $/dev/mapper/vg0-swap swap swap defaults 0 0
    $tmpfs /dev/shm tmpfs defaults 0 0
    $devpts /dev/pts devpts gid=5,mode=620 0 0
    $sysfs /sys sysfs defaults 0 0
    $proc /proc proc defaults 0 0

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

    过程分析如下

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

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

    sed 中的保持空间
     保持空间:sed 除了"模式空间"(pattern space),还有一个"hold space"的内存空间,称之为保持空间。所谓保持空间,就是,对于模式空间处理过的行,后续还有其它处理,因此可以先把处理过的行移动至保持空间,后续要处理时再移动回模式空间中。 这就类似于加工车间和仓库的概念,好比模式空间为加工车间,保持空间为仓库,不过这里的仓库存放的都是些半成品的产品。
     高级编辑命令:
      h 把模式空间中的内容覆盖至保持空间中
      H 把模式空间中的内容追加至保持空间中
      g 把保持空间中的内容覆盖至模式空间
      G 把保持空间中的内容追加至模式空间
      x 把模式空间中的内容与保持空间中的内容进行互换
      n 读取匹配到的行的下一行覆盖至模式空间
      N 读取匹配到的行的下一行追加 至模式空间
      d 删除模式空间中的行(模式空间中只有单行时有效)
      D 删除多行模式空间中的第1行(前面的追加会使模式空间中出现多行)
      P 打印多行模式空间中的第1行

  • 相关阅读:
    旋转数组的最小数字
    Redis常用方法
    用两个栈实现队列
    Spark1.4启动spark-shell时initializing失败
    从尾到头打印链表
    Hbase的安装(hadoop-2.6.0,hbase1.0)
    执行sh文件 进行MongoDB的业务逻辑导入
    Scala第二章学习笔记
    替换空格
    二维数组中的查找
  • 原文地址:https://www.cnblogs.com/Link-Luck/p/9851492.html
Copyright © 2011-2022 走看看