请教 sed 问题

2015-06-10 22:30:44 +08:00
 mrco

<mac address='52:54:00:a9:cc:20'/>

sed如何过滤出52:54:00:a9:cc:20 ?

sed "s/.'(.)'.*/\1/g" 这是可以的,但是不太明白具体含义,请赐教!

3503 次点击
所在节点    Linux
8 条回复
lilydjwg
2015-06-10 22:59:49 +08:00
为什么不用 grep -o?
knightdf
2015-06-10 23:14:39 +08:00
过滤为何不用grep -E ?
还有: sed: 1: "s/.'(.)'.*/\1/g": \1 not defined in the RE 你确定这可以?
sed: -e expression #1, char 15: invalid reference \1 on `s' command's RHS
mrco
2015-06-10 23:15:27 +08:00
@lilydjwg grep -o "..:.*:.." 可以实现,谢谢。
但是还是想把sed这个搞明白
kily
2015-06-10 23:19:38 +08:00
正确的应该是 sed "s/.*'\(.*\)'.*/\1/g" 吧
你需要搜一下正则表达式的指南
knightdf
2015-06-10 23:25:02 +08:00
@mrco 就是一个正则啊,对‘’里面的内容分组了然后后面\1填充捕获的第一个分组
mrco
2015-06-10 23:31:04 +08:00
@knightdf 诶,正则没学好。。。终于看明白了。
.*'\(.*\)'.* 就是正则描述的整个字符串,然后是通过‘ ’分割的。
然后用sed的第一个变量覆盖整个字符串。

tks!
lilydjwg
2015-06-11 07:57:52 +08:00
@mrco 嗯。所以你在主题帖里的代码根本就是错的,我还看了半天……
lilydjwg
2015-06-11 07:59:11 +08:00
@mrco 这也是我反对在论坛等地默认使用 markdown 的原因。不知道的人写好了发出去,结果代码什么的都变了样。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/197615

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX