由浅入深shell脚本训练

最近一直在学习Shell,以前一直觉得Shell语法很难,不好学,现在总算有一些收获了。其实Shell脚本就是一堆linux命令的集合,把脚本里每一步的命令搞懂是什么意思,然后整个脚本的意思就搞出来了;同样要通过脚本完成一项工作,就把这项工作分解成若干的小命令,然后把小命令集合起来就可以了。至于什么awk、sed、正则,都要靠自己平常的积累。

①查询一个服务某天的请求次数:

1
2
cat renren-1.log|grep "MSG without parse">temp
awk '{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_ll
awk '{print $8}' logs_ll > logs
cat logs | while read line
do
    echo $line echo 2013-08-01 cat $line | egrep ">>>|MSG without parse" grep "2013-08-01" |wc -l
done

⑤查询批量服务某一天请求次数,过滤掉请求次数为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_ll
awk '{print $8}' logs_ll > logs
cat logs | while read line
COUNT=`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
    fi
done

⑥查询批量服务某个月请求次数,过滤掉请求次数为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_ll
awk '{print $8}' logs_ll > logs
for 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
    done
done

⑦统计输出一个服务在某段时间的请求次数和对应的日期:

1
2
cat $line | egrep ">>> |MSG without parse" |awk '{print $1}' >>log.tmp
cat 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_ll
awk '{print $6,$8}' logs_ll > logs
awk '{print $2}' logs>log
cat log | while read line
do
    cat $line | egrep ">>> |MSG without parse" awk '{print $1}' > $line.tmp
    echo $line
    cat $line.tmp |sort uniq -c
done
 
 
 
标签: Shell、linux

由浅入深shell脚本训练的更多相关文章

  1. shell脚本训练

    *注:shell中的/data目录为自创练习目录 1,编写脚本systeminfo.sh,显示当前主机系统信息.包括主机名,IPV4地址,操作系统版本,内核版本,cpu型号,内存大小,硬盘大小 结果: ...

  2. shell脚本的基本结构以及如何执行

    1.shell脚本通常以.sh为后缀,不是说不带这个.sh脚本就不会执行,而是大家一种通用的命名规范而已 2.shell脚本中的第一行一定是:#! /bin/bash.该命令说明,该文件使用的是bas ...

  3. linux shell习题训练

    shell习题训练 求2个数之和 计算1-100的和 将一目录下所有的文件的扩展名改为bak 编译当前目录下的所有.c文件: 打印root可以使用可执行文件数,处理结果: root's bins: 2 ...

  4. Shell脚本学习指南 [ 第一、二章 ] 背景知识、入门

    摘要:第一章介绍unix系统的发展史及软件工具的设计原则.第二章介绍编译语言与脚本语言的区别以及两个相当简单但很实用的Shell脚本程序,涵盖范围包括了命令.选项.参数.Shell变量.echo与pr ...

  5. shell习题训练

    shell习题训练 求2个数之和 计算1-100的和 将一目录下所有的文件的扩展名改为bak 编译当前目录下的所有.c文件: 打印root可以使用可执行文件数,处理结果: root's bins: 2 ...

  6. 用 shell 脚本做自动化测试

    前言 项目中有一个功能,需要监控本地文件系统的变更,例如文件的增.删.改名.文件数据变动等等.之前只在 windows 上有实现,采用的是 iocp + ReadDirectoryChanges 方案 ...

  7. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  8. 使用C#给Linux写Shell脚本

    在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...

  9. shell脚本规划化模板

    shell脚本规划化模板 Linux运维过程中,shell脚本是不可缺少的工具,但是每个运维人员编程的习惯都不一样,很多时候就是实现某个功能,写出来的脚本都是烂七八糟的.脚本必须规范化,应该从以后几个 ...

随机推荐

  1. ASP.NET上传文件的几种方法

      //上传文件实例 if (fileDealer.HasFile)//判断文件是否存在        {            string filepath = "";     ...

  2. 图解zookeeper FastLeader选举算法

    zookeeper当配置为群集模式,在启动或异常情况将被选举为的例子Leader.默认选择算法FastLeaderElection. 不知道zookeeper够考虑这样一个问题:某个服务能够配置为多个 ...

  3. EasyUI基础入门之Resiable(可缩放)

    easyui的base插件学习已经进行到Resizable(可缩放)了.照旧看看easyui官网的API. Resiable 正如其字面意思一样(可伸缩),resiable主要是将一些html元素扩展 ...

  4. C#操作Xml:通过XmlDocument读写Xml文档

    什么是Xml? Xml是扩展标记语言的简写,是一种开发的文本格式.关于它的更多情况可以通过w3组织了解http://www.w3.org/TR/1998/REC-xml-19980210.如果你不知道 ...

  5. 【转】Appium 服务器端从启动到case完成的活动分析

    原文地址:http://blog.csdn.net/zhubaitian/article/details/39474151 此文的目的主要是通过分析Appium Server打印出来的log,加深对A ...

  6. Mac OS X于Android Kernel下载方法

    于上一篇日志中,我总结了大家提供的下载Android源代码的方法.这里再简单总结一下内核的下载方法. 參考这里的介绍:http://source.android.com/source/building ...

  7. 基于webrtc技术session border controler (SBC)

    由于原来的文章 http://blog.csdn.net/voipmaker  转载注明出处. 我建了一个通信学习 交流群. 45211986, 欢迎增加. WebRTC技术致力于在浏览器端实现实时音 ...

  8. windows下exfat无法写入修复

    为了可以实现mac与windows文件共享,把移动硬盘格式化为exfat了,但是在osx中放入文件后,在windows上紧进行读取写入时出现错误,提示使用chkdsk进行修正,以下是修正步骤. ①wi ...

  9. POJ 3255 Roadblocks (次级短路问题)

    解决方案有许多美丽的地方.让我们跳回到到达终点跳回(例如有两点)....无论如何,这不是最短路,但它并不重要.算法能给出正确的结果 思考:而最短的路到同一点例程.spfa先正达恳求一次,求的最短路径的 ...

  10. 虚拟局域网(VLAN)组态

    图1  实验拓扑图 实验内容: (一)分别把交换机命名为SWA,SWB. (二)划分虚拟局域网vlan,并静态地把port划分到valn中. 第一.使用两种方法划分vlan. l 在全局模式下划分vl ...