由浅入深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. 【译】使用requestIdleCallback

    原文地址:http://galen-yip.com/2015/10/07/%E3%80%90%E8%AF%91%E3%80%91%E4%BD%BF%E7%94%A8requestIdleCallbac ...

  2. BZOJ 3209 花神的数论题 数位DP+数论

    题目大意:令Sum(i)为i在二进制下1的个数 求∏(1<=i<=n)Sum(i) 一道非常easy的数位DP 首先我们打表打出组合数 然后利用数位DP统计出二进制下1的个数为x的数的数量 ...

  3. Html5 の 微信飞机大战

    (function () { var imageUrl = "images/"; //获取画布对象 var c = $("#game-box").get(0); ...

  4. Mediator - 中介者模式

    定义 用一个中介对象来封装一系列的对象的交互.中介者使各对象不须要显示地相互使用,从而使其耦合松散,并且能够独立的改变他们之间的交互. 案例 比方有一个图像界面,在界面上有一个输入框LineEdit, ...

  5. SHDocVw, AxSHDocVw的引用

    原文:SHDocVw, AxSHDocVw的引用 SHDocVw的引用SHDocVw一定要在下面这个路径找: 类似 C:\Program Files\Microsoft Visual Studio 9 ...

  6. 微信公众平台消息接口开发-封装weixin.class.php

    原文:微信公众平台消息接口开发-封装weixin.class.php 一.封装weixin.class.php 由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处 ...

  7. ios基金会-XCode温馨提示

    (一个)代号规格pragma mark 1.定义 #pragma 开头的代码是一条编译器指令,是一个特定于程序或编译器的指令. 不一定适用于其他编译器或其他环境.假设编译器不能识别该指令.则会将其忽略 ...

  8. php生成签名及验证签名

    <?php /** * 根据原文生成签名内容 * * @param string $data 原文内容 * * @return string * @author confu */ functio ...

  9. bootstrap基本标签总结2

    [布局]bootstrap基本标签总结2   缩略图 <div class="container"> <div class="row"> ...

  10. ORACLE经常使用的命令

    一个.ORACLE启动和关机 1.在独立环境中 要启用或禁用ORACLE该系统必须切换到ORACLE用户,例如以下 su-oracle a.启动ORACLE系统 oracle>svrmgrl S ...