由浅入深shell脚本训练
由浅入深shell脚本训练
最近一直在学习Shell,以前一直觉得Shell语法很难,不好学,现在总算有一些收获了。其实Shell脚本就是一堆linux命令的集合,把脚本里每一步的命令搞懂是什么意思,然后整个脚本的意思就搞出来了;同样要通过脚本完成一项工作,就把这项工作分解成若干的小命令,然后把小命令集合起来就可以了。至于什么awk、sed、正则,都要靠自己平常的积累。
①查询一个服务某天的请求次数:
|
1
2
|
cat renren-1.log|grep "MSG without parse">tempawk '{a[$1]++}END{for(i in a)print i,a[i]}' temp |
②第一列相同,第二列相加:
|
1
|
awk '{a[$1]+=$2}END{for(m in a)print m,a[m]}' |
③查询包含log字符的文件名称:
|
1
|
find . -name "*.log*" -type f | xargs ls -l |
④查询批量服务某一天请求次数:
|
1
2
3
4
5
6
7
8
|
#!/bin/bash#查询批量服务某一天请求次数find . -name "*log*" -type f | xargs ls -l > logs_llawk '{print $8}' logs_ll > logscat logs | while read linedo echo $line echo 2013-08-01 cat $line | egrep ">>>|MSG without parse" | grep "2013-08-01" |wc -ldone |
⑤查询批量服务某一天请求次数,过滤掉请求次数为0的请求:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/bin/bash#查询批量服务某一天请求次数,过滤掉请求次数为0的请求find . -name "*log*" -type f | xargs ls -l > logs_llawk '{print $8}' logs_ll > logscat logs | while read lineCOUNT=`cat $line | egrep ">>> |MSG without parse" | grep "2013-07-02" | wc -l`do if [ $COUNT -ne 0 ]; then echo $line 2013-07-02 echo $COUNT else echo $line >/dev/null fidone |
⑥查询批量服务某个月请求次数,过滤掉请求次数为0的请求:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#!/bin/bash#查询批量服务某个月请求次数,过滤掉请求次数为0的请求find . -name "*log*" -type f | xargs ls -l > logs_llawk '{print $8}' logs_ll > logsfor day in `seq 30`do cat logs | while read line COUNT=`cat $line | egrep ">>> |MSG without parse" | grep "2013-08-$day" | wc -l` do if [ $COUNT -ne 0 ]; then echo $line 2013-08-$day echo $COUNT else echo $line >/dev/null fi donedone |
⑦统计输出一个服务在某段时间的请求次数和对应的日期:
|
1
2
|
cat $line | egrep ">>> |MSG without parse" |awk '{print $1}' >>log.tmpcat log.tmp |sort |uniq -c |
⑧查询批量服务在所有日期的请求次数,并过滤掉请求次数为0的请求,输出服务名、日期和对应的请求次数:
|
1
2
3
4
5
6
7
8
9
10
11
|
#!/bin/bash#查询批量服务在所有日期的请求次数,并过滤掉请求次数为0的请求,输出服务名、日期和对应的请求次数find . -name "*log*" -type f | xargs ls -l > logs_llawk '{print $6,$8}' logs_ll > logsawk '{print $2}' logs>logcat log | while read linedo cat $line | egrep ">>> |MSG without parse" | awk '{print $1}' > $line.tmp echo $line cat $line.tmp |sort | uniq -cdone |
由浅入深shell脚本训练的更多相关文章
- shell脚本训练
*注:shell中的/data目录为自创练习目录 1,编写脚本systeminfo.sh,显示当前主机系统信息.包括主机名,IPV4地址,操作系统版本,内核版本,cpu型号,内存大小,硬盘大小 结果: ...
- shell脚本的基本结构以及如何执行
1.shell脚本通常以.sh为后缀,不是说不带这个.sh脚本就不会执行,而是大家一种通用的命名规范而已 2.shell脚本中的第一行一定是:#! /bin/bash.该命令说明,该文件使用的是bas ...
- linux shell习题训练
shell习题训练 求2个数之和 计算1-100的和 将一目录下所有的文件的扩展名改为bak 编译当前目录下的所有.c文件: 打印root可以使用可执行文件数,处理结果: root's bins: 2 ...
- Shell脚本学习指南 [ 第一、二章 ] 背景知识、入门
摘要:第一章介绍unix系统的发展史及软件工具的设计原则.第二章介绍编译语言与脚本语言的区别以及两个相当简单但很实用的Shell脚本程序,涵盖范围包括了命令.选项.参数.Shell变量.echo与pr ...
- shell习题训练
shell习题训练 求2个数之和 计算1-100的和 将一目录下所有的文件的扩展名改为bak 编译当前目录下的所有.c文件: 打印root可以使用可执行文件数,处理结果: root's bins: 2 ...
- 用 shell 脚本做自动化测试
前言 项目中有一个功能,需要监控本地文件系统的变更,例如文件的增.删.改名.文件数据变动等等.之前只在 windows 上有实现,采用的是 iocp + ReadDirectoryChanges 方案 ...
- 第一个shell脚本
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...
- 使用C#给Linux写Shell脚本
在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...
- shell脚本规划化模板
shell脚本规划化模板 Linux运维过程中,shell脚本是不可缺少的工具,但是每个运维人员编程的习惯都不一样,很多时候就是实现某个功能,写出来的脚本都是烂七八糟的.脚本必须规范化,应该从以后几个 ...
随机推荐
- crawler_x-requested-with 请求头
在分析微博热点话题时 拿到异步请求后,有个关键参数 x-request-with 不携带不给正确响应 在服务器端判断request来自Ajax请求(异步)还是传统请求(同步): 两种请求在请求的He ...
- 证明N={1,2,...,n,...}最高万元 黄晓宁
证明N={1,2....,n....}最高万元 黄小宁(通讯:广州市华南师大南区9-303 510631) 5000年数学一直不知{2,3,....n+1,...}(n的变域是N)中"深 ...
- 转载使用Flurl制作可复用的分页组件
使用Flurl制作可复用的分页组件 使用ASP.NET MVC查询时,一直使用MvcPaging组件,虽然需要自定义MvcPaging.Pager才能达到我想要的效果,但在没有较好的URL库时,还是这 ...
- Html5 の 微信飞机大战
(function () { var imageUrl = "images/"; //获取画布对象 var c = $("#game-box").get(0); ...
- printf与++的puzzle
int b = 0; int c = 0; int main(int argc, const char *argv[]) { printf("%d %d %d %d %d",b,b ...
- linux 虚拟文件系统
转自:https://www.ibm.com/developerworks/cn/linux/l-cn-vfs/ Linux 允许众多不同的文件系统共存,并支持跨文件系统的文件操作,这是因为有虚拟文件 ...
- Socket 学习(三).5 UDP 的弱点
前面 讲到了,udp 传输文本的例子,发现 udp 确实 比tcp 高效一些,现在我用来传输文件,问题果然来了,结果发现 他不能一次 传输大于 64K的东西! 那么 我自然想到了 切包,多次发送,再合 ...
- Java用ZIP格式压缩和解压缩文件
转载:java jdk实例宝典 感觉讲的非常好就转载在这保存! java.util.zip包实现了Zip格式相关的类库,使用格式zip格式压缩和解压缩文件的时候,须要导入该包. 使用zipoutput ...
- IOS中TableView的用法
一.UITableView 1.数据展示的条件 1> UITableView的所有数据都是由数据源(dataSource)提供的,所以要想在UITableView展示数据,必须设置UITable ...
- 谈谈那些年PHP中屌屌的验证码
验证码已经是现在网站中非常基础的知识点了,验证码的存在可以防止恶意破解密码.刷票.灌水,可以有效的防止暴力破解特定用户. 现在就来了解了解那些年PHP中屌屌的验证码吧. 首先,以四位验证码为例(多位验 ...