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-信息截取妙用的主要内容,如果未能解决你的问题,请参考以下文章