您的位置:首页 > 运维架构 > Linux

Linux文本处理三剑客之sed

2016-03-20 23:53 531 查看

一、什么是sed

    sed(Stream EDitor)流编辑器,是一个非交互式的文本编辑器,它可以对文本文件和标准输入进行编辑,标准输入可以来自键盘输入、文件重定向、字符串、变量等。sed从文本的一个文本行或者标准输入中读取数据,将其复制到缓冲区,然后读取命令行或脚本的第一个命令,对此要求的行号进行编辑,重复此过程,直到命令行或者脚本中的所有命令都执行完毕。

    sed适用于以下三种场景:

编辑相对交互式文本编辑器而言太大的文件。编辑命令太傅在,在交互式文本编辑器中难以输入的情况对文件扫描一遍,但是需要执行多个编辑函数的情况

二、sed命令组成部分

命令格式:sed [OPTION]...  'script'  [input-file] ...

[OPTION]:sed 命令选项

script:sed脚本,由“地指定界编与辑命令组成”(注意此处地址定界与编辑命令中间没有任何符号)

三、sed命令常用选项及脚本详解

sed选项:

    -n:不输入模式空间中的内容至屏幕

[code=bash;toolbar:false"># sed '/^#/d' fstab  UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0 UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0 UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0 UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0 # sed -n '/^#/d' fstab  # 此处没有任何显示,模式空间中的内容为^#开头的文件,而剩下的被编辑命令d所删除,所以没有任何显示 # sed '/^#/p' fstab  # p为显示模式空间的内容,因为默认也显示,所以此处每行出现两次 # # # /etc/fstab # /etc/fstab # Created by anaconda on Fri Mar  4 08:36:03 2016 # Created by anaconda on Fri Mar  4 08:36:03 2016 # # # Accessible filesystems, by reference, are maintained under '/dev/disk' # 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 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # # UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0 UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0 UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0 UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0 # sed -n '/^#/p' fstab  # # /etc/fstab # Created by anaconda on Fri Mar  4 08:36:03 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 #[p]# cat sed_script  # sed script /^#/d /^$/d # sed -f sed_script /etc/fstab  UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0 UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0 UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0 UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0[p]# sed -r '/^[[:space:]]*$/d' fstab # # /etc/fstab # Created by anaconda on Fri Mar  4 08:36:03 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=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0 UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0 UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0 UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0 # 此处过滤出后空格行没有了[p][strong]# sed '2,+3d' fstab # 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=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0 UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0 UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0 UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0 # cat fstab # # /etc/fstab # Created by anaconda on Fri Mar  4 08:36:03 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=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0 UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0 UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0 UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0[p]# sed '/^[^#]/,/^#/d' fstab # # /etc/fstab # Created by anaconda on Fri Mar  4 08:36:03 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 # # cat fstab # # /etc/fstab # Created by anaconda on Fri Mar  4 08:36:03 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=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0 UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0 UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0 UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults         20000 0 0[p]# sed  -n '1~2p' fstab # /etc/fstab # # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0 UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0 # sed -n '2~2p' fstab # # Created by anaconda on Fri Mar  4 08:36:03 2016 # Accessible filesystems, by reference, are maintained under '/dev/disk' # UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0 UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0 # cat fstab # # /etc/fstab # Created by anaconda on Fri Mar  4 08:36:03 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=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0 UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0 UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0 UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0[p][strong]# sed '/^#/i \new line' fstab  new line # new line # /etc/fstab new line # Created by anaconda on Fri Mar  4 08:36:03 2016 new line # new line # Accessible filesystems, by reference, are maintained under '/dev/disk' new line # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info new line # UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0 UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0 UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0 UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0[p]# sed -n '/^#/w newfile1' fstab # cat newfile1  # # /etc/fstab # Created by anaconda on Fri Mar  4 08:36:03 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 #[p]# sed '/^#/=' fstab 2 # 3 # /etc/fstab 4 # Created by anaconda on Fri Mar  4 08:36:03 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 # UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0 UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0 UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0 UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0[p]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: