博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过帮网友解答问题训练同学们使用awk,sed案例
阅读量:6817 次
发布时间:2019-06-26

本文共 2438 字,大约阅读时间需要 8 分钟。

由此题答案,我们看出,玩运维,技术仅仅是基础,思想才是上层建筑,

简单、易用是运维追求的目标,本文法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
欢迎朋友们留下你的更多更好的智慧,可以写在评论里。老男孩的学生们看到了,请你们注释下你们的答案,让博友们更清晰一些。

转载地址:http://twszl.baihongyu.com/

你可能感兴趣的文章
C++:函数模板与模板函数
查看>>
iOS 内存管理
查看>>
linux查看某个进程CPU消耗较高的具体线程或程序的方法
查看>>
Codrops 实验:使用 Vibrant.js 提取图像颜色
查看>>
WPF中的换行符
查看>>
15天玩转redis —— 第五篇 集合对象类型
查看>>
相机的3A技术
查看>>
SSH配置
查看>>
Break the Chocolate(规律)
查看>>
论文阅读之 Inferring Analogous Attributes CVPR 2014
查看>>
quick-cocos2d-x游戏开发【6】——制作您自己的自定义效果button菜单
查看>>
JSON.parse()和JSON.stringify()
查看>>
android中的返回键与Activity
查看>>
站点分析基础概念网页浏览数
查看>>
蛇形填数之斜着排
查看>>
ASI简单实现网络编程
查看>>
LeetCode - Flatten Binary Tree to Linked List
查看>>
欧几里得(模板)
查看>>
docker学习(2) mac中docker-machine使用vmware fusion以及配置国内镜像加速
查看>>
UVALive 3989 Ladies' Choice
查看>>