【发布时间】:2016-01-02 16:22:18
【问题描述】:
使用 curl + grep 我得到以下输出:
<h3>Serial ID: L322607B2411012</h3>
<span>felipea</span>
<span>2015-10-05 20:06:43 UTC</span>
我是 sed-stuff 的新手,我想使用 sed 来获得以下输出:
L322607B2411012
felipea
20:06:43
为了得到结果,我编写了以下正则表达式:
/<|>|h3|/|span| UTC|.......... /g
在http://www.regexr.com/ 上测试,文字:
<h3>Serial ID: L322607B2411012</h3>
<span>felipea</span>
<span>2015-10-05 20:06:43 UTC</span>
<h3>Serial ID: L322607B2411135</h3>
<span>tressino</span>
<span>2015-10-05 19:57:10 UTC</span>
它会根据需要突出显示匹配项(图片:http://snag.gy/0ge60.jpg),但是当我进行真正的测试时它不起作用,请按照命令:
curl internalURL | egrep -i '(utc|Serial ID:|tressino|felipea)' | sed 's/<|>|h3|/|span| UTC|.......... /g'
上面的命令返回正常的输出,和没有sed+regex一样。
转义斜线会返回以下错误:
sed 's/<|>|h3|\/|span| UTC|.......... /g'
sed: -e expression #1, char 35: unterminated `s' command
谁能指出我做错了什么?
提前致谢。
【问题讨论】:
-
怎么不行?会发生什么?
-
您需要转义斜线:
\/。否则模式会提前结束。 -
什么都不做,输出和没有sed+regex完全一样。如果我使用 sed -r 而不是 sed 它会返回以下输出:|span| UTC|........ |跨度| UTC|........ |跨度| UTC|........ S|跨度| UTC|........ e|跨度| UTC|........ r|span| UTC|........ i|跨度| UTC|........一个|跨度| UTC|........ l|跨度| UTC|........ |跨度| UTC|........ I|跨度| UTC|........ D|跨度| UTC|........ :|跨度| UTC|........ |跨度| UTC|........ L|跨度| UTC|........等等
-
转义斜线,因为@lenz 说它返回以下错误: sed 's/|h3|\/|span| UTC|........ /g' sed: -e 表达式 #1, char 35: 未终止的 `s' 命令
-
哦,这是你真正的正则表达式,而不仅仅是某种缩写符号?