awk,sed案例

由此题答案,我们看出,玩运维,技术仅仅是基础,思想才是上层建筑,
简单、易用是运维追求的目标,本文法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

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS