由此题答案,我们看出,玩运维,技术仅仅是基础,思想才是上层建筑,
简单、易用是运维追求的目标,本文法3,法5堪称最佳答案。
问题:某成都网友刘刘群内提出这样的问题,希望同学们帮他解答下。
问题如下:
成都@刘刘(13888188) 21:26:58
ls /root 后 我看到了这三个文件
amp-content-display-portlet-1.0.1-20120829.081044-11.war
amp-facebook-post-editor-1.0.1-20120829.084615-1.war
amp-services-portlet-1.0.2-20120829.085733-3.war
然后我要写个脚本,把版本号及后面的数字都给屏蔽了,只匹配文件名,请问下这段匹配的语句该如何写啊?
这是群里网友给他的解法:
find /root/test/ | awk -F "/" '{print $4}' |awk -F "." '{print $1}' | sed -e "s/-1//g "
这个解法可以实现,但是有点字符太多了,不够专业。请大家发挥你们学习的技术,给出你们认为最佳的答案。现在到了大家亮剑的时候了。
(to 老男孩培训12期(面授加网络)全体学生)
由于方法太多,这里我们仅限制使用sed,awk完成。
测试文件:
[root@oldboy ~]# cat test.log
amp-content-display-portlet-1.0.1-20120829.081044-11.war
amp-facebook-post-editor-1.0.1-20120829.084615-1.war
amp-services-portlet-1.0.2-20120829.085733-3.war
amp-facebook-account-editor-1.0.1-20120829.081353-15.war
amp-inbound-processor-hook-1.0.1-20120829.081546-9.war
amp-vcr-editor-portlet-1.0.1-20120829.081801-21.war
法1
[root@oldboy ~]# sed 's#\(^.*\)-1\..*\.war#\1.war#g' test.log
amp-content-display-portlet.war
amp-facebook-post-editor.war
amp-services-portlet.war
amp-facebook-account-editor.war
amp-inbound-processor-hook.war
amp-vcr-editor-portlet.war
法2
[root@oldboy ~]# sed -r 's/(.*.)-(1.0.*.)/\1.war/' test.log
amp-content-display-portlet.war
amp-facebook-post-editor.war
amp-services-portlet.war
amp-facebook-account-editor.war
amp-inbound-processor-hook.war
amp-vcr-editor-portlet.war
法3(最佳答案,符合简单、易用原则)
[root@oldboy ~]# awk -F "-1" '{print $1".war"}' test.log
amp-content-display-portlet.war
amp-facebook-post-editor.war
amp-services-portlet.war
amp-facebook-account-editor.war
amp-inbound-processor-hook.war
amp-vcr-editor-portlet.war
法4
[root@oldboy ~]# awk -F "-[0-9].*" '{print $1".war"}' test.log
amp-content-display-portlet.war
amp-facebook-post-editor.war
amp-services-portlet.war
amp-facebook-account-editor.war
amp-inbound-processor-hook.war
amp-vcr-editor-portlet.war
法5(最佳答案,符合简单、易用原则)
[root@oldboy ~]# sed 's/-[0-9].*/.war/' test.log
amp-content-display-portlet.war
amp-facebook-post-editor.war
amp-services-portlet.war
amp-facebook-account-editor.war
amp-inbound-processor-hook.war
amp-vcr-editor-portlet.war
法6
[root@oldboy ~]# sed -r 's/-[-.0-9]+[0-9]//' test.log
amp-content-display-portlet.war
amp-facebook-post-editor.war
amp-services-portlet.war
amp-facebook-account-editor.war
amp-inbound-processor-hook.war
amp-vcr-editor-portlet.war
欢迎朋友们留下你的更多更好的智慧,可以写在评论里。老男孩的学生们看到了,请你们注释下你们的答案,让博友们更清晰一些。
本文出自 “老男孩linux培训” 博客,请务必保留此出处http://oldboy.blog.51cto.com/2561410/978628
本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/articles/8672173.html