shell-信息截取妙用

Posted Friends of the wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell-信息截取妙用相关的知识,希望对你有一定的参考价值。

实例1:

1、对Apache日志,编写对应的处理脚本
输入:
Apache
2020-02-03 11:03:23 WARN My warning message repeated 3 times
2020-02-03 11:03:23 ERR oops, error message repeated 8 times
2020-02-03 11:03:26 ERR this is my error message repeated 1 times
2020-02-03 11:03:26 WARN MY warning , so scary, repeated 1 times
2020-02-03 11:03:26 WARN cpu utilization high, repeated 1 times
2020-02-03 11:03:29 INFO this is for test repeated 2 times

1.1统计不同级别日志的行数
输出:
Apache
WARN: 3
ERR: 2
INFO: 1
思路:
1)声明使用的shell
2)定义变量
3)对内容过滤将结果,输出
4)为了方便部门其他人使用,我们会在第二行写注释,此脚本用途

常用选项说明:

– c 显示输出中,在每行行首加上本行在文件中出现的次数。

– d 只显示重复行。

– u 只显示文件中不重复的各行。

A、过滤出所需内容,及重复次数

B、最终脚本

vim   uniq.sh 
#!/bin/bash
W=`grep "WARN" uniq.log | cut -d ' ' -f 3 | uniq -c | awk 'print $1'`
E=`grep "ERR" uniq.log | cut -d ' ' -f 3 | uniq -c | awk 'print $1'`
I=`grep "INFO" uniq.log | cut -d ' ' -f 3 | uniq -c | awk 'print $1'`

echo "WARN:$W"
echo "ERR:$E"
echo "INFO:$I"

1.2 统计Error/WARN发生的总次数
输出:
Apache
ERR: 9
WARN: 5


实例2

1、对指定字段求和

vim 1.sh
1 aaa 123.52
2 bbb 125.54
3 aaa 123.52
4 aaa 123.52
5 ccc 126.36

2、分组求和,排序

awk ‘count[$2] += $3 END for(i in count ) print i, count[i]’ sum.log | sort -nrk 2

3、仅从日志过滤出ip输出屏幕
awk ‘print $1’ access.log |sort | uniq -c | sort -n -r

4、shell 对数据备份

#!/bin/bash
if      [ -d /log/bak/ ] || mkdir -p /log/bak/
then
        tar Pcf /log/bak/log_$(date +%Y%m%d)''$(date +%H%M%S).tar.gz  /var/log/*.log
        echo "干完!可以约会啦"
fi

5、

#!/bin/bash

USER=root
#密码
PASSWORD=5EYS40T04BMF
#下载文件目录
SRCDIR=/u02/dab
#FTP目录(待下载文件目录)
DESDIR=/u01/sftpFiles
#银联IP
IP=192.168.1.10
#端口
PORT=22022

lftp -u $USER,$PASSWORD sftp://$IP:$PORT<<EOF
cd $DESDIR
lcd $SRCDIR
#需要下载的文件为text.xml
get text.xml
by
EOF

以上是关于shell-信息截取妙用的主要内容,如果未能解决你的问题,请参考以下文章

BioCode根据seq与位点信息截取窗口

Shell中SEQ妙用

关于setTimeout的妙用

shell脚本的使用---cut截取数据

转 shell中字分隔的妙用:变量IFS

shell脚本的使用---cut截取数据