AWK案例(1)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值