Centos7下,sed命令用法介绍

时间:2022-10-29 16:46:29

sed: Stream Editor 流编辑器,行编辑器,逐行编辑。

将每行内容读入到内存中,在内存中进行处理,将结果返回给屏幕 ,此段内存空间称为模式空间默认不编辑原文件,仅对模式空间的数据进行处理,处理结束后,将模式空间的内容显示到屏幕。

工具/原料

Centos7 操作系统

  • sed命令安装包

方法/步骤

  1. sed命令的使用格式

    [root@centos7-2 ~]# sed [-nefr] [动作]

    # sed [option] scripts file1 file2 ...

    # sed [option] 'AddressCommand' file1 file2 ...

    Address:表示对哪些行进行处理

    Command:操作命令

    option选项:-nefr

  2. sed命令 option选项:-nefr

    -n :不再显示模式空间中的内容(默认显示)

    -i   : 直接修改原文件

    -e  : 同时执行多个匹配操作

    [root@centos7-2 ~]# sed -e '/^#/d' -e '/^$/d' /etc/fstab 

    //找出 fstab文件, 开关是#(注释行)与空行。

    -f :FILE 将多个AddressCommand保存至文件中,每行一个AddressComma

    [root@centos7-2 ~]# cat /tmp/file.txt 

    /^#/d

    /^$/d

    [root@centos7-2 ~]# sed -f /tmp/file.txt /etc/fstab 

    //找出 fstab文件, 开关是#(注释行)与空行。

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

    [root@centos7-2 ~]# sed -r  's|l(..e)|L\1|' /tmp/1.txt

    --follow-symlinks     修改软链接文件时 

    [root@centos7-2 ~]# sed --follow-symlinks -i 's|hello|hi|' /tmp/2.txt 

  3. sed命令 Address表示方法:

    1、StartLine,EndLine 

           1,100            \\前100行

           1,$                \\全文

           3,10               \\3到10行

    2、LineNumber

            3                   \\第3行

    3、StartLine,+n 

            5,+2              \\从第五行开始起,后2行。 5行6行

            /root/,+2       \\匹配root的那行与后一行。

    4、/正则表达式/

            /root/

            /bash$/

    5、 /正则表达式1/, /正则表达式2/

    第1次被Regex1匹配的行开始,到第1次被Regex2匹配的行中间的所有行

  4. sed命令  Command:

      d  删除符合条件的行

      # sed '1,2d' /etc/inittab 

      删除文件中包含oot的行

      # sed '/oot/d' /etc/fstab 

      删除第1行及其后2行

      # sed '1,+2d' /etc/fstab 

      删除第1行

      # sed '1d' /etc/fstab 

      删除以/开头的行

     # sed '/^\//d' /etc/fstab 

      

      p 显示符合条件的行

        显示以/开头的行 

     # sed -n '/^\//p' /etc/fstab 

     a \string 在符合条件的行后追加新行,string为追加的内容

    在以/开头的行后面追加# hello world 

    # sed '/^\//a \# hello world' /etc/fstab 

    在以/开头的行后面追加两行内容,分别为# hello worl  # hello linux 

    # sed '/^\//a \# hello world\n# hello linux' /etc/fstab 

      

     i \string 在符合条件的行前添加新行,string为追加的内容

       在文件第1行添加# hello world 

       # sed '1i \# hello world' /etc/fstab 

    c \string 替换指定行的内容

       将文件中最后一行内容替换为End Of File

       # sed '$c \End Of File' /1.txt 

       # sed '7c \SELINUX=disabled' /etc/sysconfig/selinux 

    = 用于显示每一行的行号

       显示/etc/passwd文件最后一行的行号

        # sed -n '$=' /etc/passwd

        49

       

     r file_name 将指定文件的内容添加到符合条件的行的后面

        在文件的第2行后追加/etc/issue文件的内容 

         # sed '2r /etc/issue' /etc/fstab 

       

    w file_name 将符合条件的内容另存到指定文件中

        将以UUID开头的行另存为到/1.txt中

       # sed '/^UUID/w /1.txt' /etc/fstab 

       

    s/regex/string/[修饰符] 查找并替换 默认,只替换每一行第1次出现的字符

       修饰符:g:替换每一行所有的字符

       i:忽略大小写