+ -
当前位置:首页 → 问答吧 → sed 中的标签 麻烦解释一下...发个链接也可以!

sed 中的标签 麻烦解释一下...发个链接也可以!

时间:2011-01-25

来源:互联网

(一):
在sed中b,t命令说是要跳转到下一个标签,这个标签是怎么定义的呢?
例如:  sed '/^AA/ba;s/$/ NO/;b;:a;s/$/ YES/' urfile 这里面a代表一个标签
问题1:这个标签的定义有什么规则吗?或者说怎么定义的这个标签?

(二):
sed中正则提到:\(..\)         保存已匹配的字符
1,20s/\(you\)self/\1r/  标记元字符之间的模式,并将其保存为标签1,之后可以使用\1来引用它。最多可以定义9个标签,从左边开始编号,最左边的是第一个。此例中,对第1到第20行进行处理,you被保存为标签1,如果发现youself,则替换为your。
Q : 这个标签是怎么定义的啊?我在看很多书籍的时候里面基本都没有提到这个定义的具体方法。


麻烦各位路过的大侠解释一下,发个链接....跪谢了!

作者: 南极雨   发布时间: 2011-01-25

问题1:
冒号加字串就是标签(行号)
问题2:
举例
(1(2)(3)(4(5)))
这里的:
\1 (1(2)(3)(4(5)))
\2 (2)
\3 (3)
\4 (4(5))
\5 (5)
\n(n是1-9的数字)表示从左往右数第n个左括号对应的

作者: cjaizss   发布时间: 2011-01-25

http://bbs.chinaunix.net/viewthr ... p;extra=&page=1

作者: blackold   发布时间: 2011-01-25



QUOTE:
问题1:
冒号加字串就是标签(行号)
问题2:
举例
(1(2)(3)(4(5)))
这里的:
\1 (1(2)(3)(4(5)))
\2 (2) ...
cjaizss 发表于 2011-01-25 12:46




    可不可以举个例子啊?
替换的时候是根据标签进行替换吗?比方说:/\(my\)\(se\)\(lv\)es/\1you...就是把myselves替换成you rs rd es ,分成多少种情况?或者说,我只替换第一个标签时就成了:my 替换成了you 其他做好标签的没有变化.怎么写啊?

作者: 南极雨   发布时间: 2011-01-25

打个比方
echo '$#abc123&^'|sed -r 's/([a-z]+)([0-9]+)/\1 \2/'
结果
$#abc 123&^
是这样的
([a-z]+)([0-9]+)匹配abc123
其中([a-z]+)对应abc,为\1
([0-9]+)对应123,为\2

作者: cjaizss   发布时间: 2011-01-25