说明:蓝色=命令名称 浅绿=命令参数 浅蓝=选项 紫色=目录 系统环境:CentOS 6.2 x86_64
需求:将 I love linux ! 反向输出 :! linux love I
方法:echo "I love linux !" |sed "/
/!G;s/([^ ]* )(.*
)/&21/;//D;s/
/ /" 650) this.width=650;" border=0>
解析:此方法关键在 D 参数。D 删除模式空间中的第一行(确切的说应该时第一部分),如果删除后,模式空间中还有剩余行,则返回 D 之前的命令,重新执行,如果 D 后,patten space 中没有任何内容,则将退出 sed命令,将控制权交给 sed,在没有 -n 参数时,sed 会输出 pattern space 中的内容,如果最后一行没有被读入,则 sed 继续读入下一行,并去掉结尾的
放到 pattern space 中,继续执行 sed 命令如果最一行已经读入,则退出 sed。
D 命令会引起循环,如果 D 被执行,那么 D 后面的命令是不会被执行的。第一次"/
/!G;"没有
换行符,要执行G,因为保留空间中为空,所以在模式空间追加一空行,此时内容为
模式空间第一部分:I love linux !
模式空间第二部分:null
执行后面的替换 “s/([^ ]* )(.*
)/&21/;”
模式空间第一部分:I love linux !
模式空间第二部分:love linux !
I
模式空间第三部分:null
执行 ”//D; “//匹配空行执行D删除模式空间第一部分
模式空间第一部分:love linux !
I
模式空间第二部分:null
因为还有内容,返回前面命令
第二次"/
/!G;"有
不执行,内容不变
模式空间第一部分:love linux !
I
模式空间第二部分:null
执行后面的替换 “s/([^ ]* )(.*
)/&21/;”
模式空间第一部分:love linux !
模式空间第二部分:linux !
love I
模式空间第三部分:null
执行 ”//D; “//匹配空行执行D删除最上一行
模式空间第一部分:linux !
love I
模式空间第二部分:null
因为还有内容,返回前面命令
第三次"/
/!G;"有
不知行,内容不变
模式空间第一部分:linux !
love I
模式空间第二部分:null
执行后面的替换 “s/([^ ]* )(.*
)/&21/;”
模式空间第一部分:linux !
模式空间第二部分:!
linux love I
模式空间第三部分:null
执行 ”//D;“ //匹配空行执行D删除最上一行
模式空间第一部分:!
linux love I
模式空间第二部分:null
因为还有内容,返回前面命令
第四次"/
/!G;"有
不知行,内容不变
模式空间第一部分:!
linux love I
模式空间第二部分:null
执行后面的替换 “s/([^ ]* )(.*
)/&21/;” 因为!后面没有空格所以不匹配,不执行
模式空间第一部分:!
linux love I
模式空间第二部分:null
执行 ”//D;“ //匹配空行执行D删除最上一行
模式空间:null
此时模式空间中为空结束循环,此时若没有 ”s/
/ / “则应该打印
!
linux love I因为有”s/
/ / “,所以再此处将!
linux love I作为”s/
/ / “的输入内容,执行替换,最后结果
! linux love Iawk数组嵌套筛选数据CentOS 6 Setup 安装相关资讯 sed
- Linux 管理员都应该会的命令:sed (01月13日)
- Linux正则表达式sed 详述 (04/16/2015 15:19:04)
- shell中sed和awk的一些用法和例子 (02/03/2015 11:52:34)
| - sed 命令详解 (11/15/2015 10:16:53)
- sed一些参数的用法 (04/16/2015 15:05:09)
- sed命令详解与示例 (11/12/2014 19:21:48)
|
本文评论 查看全部评论 (0)