曲径通幽论坛

标题: 使用大括号{ } -- 命令分组 [打印本页]

作者: beyes    时间: 2011-9-1 15:27
标题: 使用大括号{ } -- 命令分组
在 sed 中使用大括号 '{ }' 可以在相同的地址上(或相同的行上),或在一个地址嵌套在另一个地址中应用多个命令。


所谓嵌套地址是指,如果指定了行的范围,然后再在这个范围内指定另一行,这个行(地址)就是嵌套行(嵌套地址)。


有一个文本如下:
$ cat china.txt
hello world
spring
red wind


.Blood
effect


something
good


great
.CHINA


are you ok?

下面使用大括号 { } 应用地址分组找出 .Blood 和 .CHINA 之间的行,然后删掉其中的空格行,并将 "oo" 换成大写的 "OO" 。


sed 命令如下应用:
$ sed '/^\.Bl/, /^\.CH/ {
/^$/d; s/oo/OO/g;
}' china.txt
hello world
spring
red wind


.BlOOd
effect
something
gOOd
great
.CHINA


are you ok?

上面 sed 命令应用中, /^\.Bl/, /^\.CH/ 表示查找出匹配  .Blood 和 .CHINA 之间的行,然后紧跟着写左大括号,并在括号内应用了两条命令,第 1 条用于删除空格行,第 2 条将 oo 替换为 OO ,最后不忘将右括号写回。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2