文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第10章 初级班毕业了
“Unix不会阻止用户干蠢事,因为那样也会妨碍用户做聪明的事儿。”——Doug Gwyn
恭喜你坚持到正则表达式初级班毕业。你不再是个初学者了,你已经接触了最常用的正则表达式语法。作为程序员,正则表达式会给你的工作提供更多的改善机会。
学习正则表达式为我节省了不少的时间。让我举个例子吧。
我在工作中经常要使用XSLT,经常要分析XML文件中的标签。
在上一章中我展示过一部分,但现在这里有个更长的单行命令,它从lorem.dita文件中提取一列标签名并转换为简单的XSLT样式表:
grep -Eo '<[_a-zA-Z][^>]*>' lorem.dita | sort | uniq | sed '1 i\
<xml:stylsheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">\
; s/^</\
<xsl:template match=";s id=\".*\"/;s>$/">\
<xsl:apply-templates\/>\
<\/xsl:template>/;$ a\
\
</xsl:stylesheet>\
'
我知道这个脚本看起来很复杂,但你若长期使用这些东西之后,会培养出新的思维方式。我不打算解释这个脚本执行的操作了,因为我确信你可以自己弄明白。
该脚本的输出如下:
<xml:stylsheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="body">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="li">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="p">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="title">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="topic">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="ul">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
这只是个开头。当然,要让这个简单的样式表变得有用还需要做很多编辑工作,但这样可以让你少键入很多东西。
我承认如果在文件中用以下sed命令则会更简单。事实上,我就这样做了。你可以在示例代码库中找到xslt.sed文件。下面是该文件的内容:
#!/usr/bin/sed
1 i\
<xml:stylsheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">\
s/^</\
<xsl:template match=";s id=\".*\"/;s>$/">\
<xsl:apply-templates\/>\
<\/xsl:template>/;$ a\
\
</xsl:stylesheet>\
然后这样运行它:
grep -Eo '<[_a-zA-Z][^>]*>' lorem.dita | sort | uniq | sed -f xslt.sed
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论