shell之日志处理

#!/bin/bash
#by lc at 20160428 for hadoop(grep_recharge)
DATE=`date +%F_%H\:%M\:%S`
YTDATE=`date -d "-1 day" +%Y%m%d`
RESTDIR=/home/hadoop/prodata/rest
DATEDIR=/home/hadoop/prodata/rest/$YTDATE
RESTFILE=${DATEDIR}/recharge-$YTDATE.log
#RESTFILE=recharge-20160427.log
#NEWFILE=parse-recharge.log
NEWFILE=${DATEDIR}/parse-recharge-$YTDATE.log
LOGFILE=/server/scripts/grep_recharge.log
function CheckFile(){
> $NEWFILE
WCRESTFILE=`wc -l $RESTFILE`
echo ‘########################‘ >> $LOGFILE
echo "${DATE} GO..." >> $LOGFILE
echo "$WCRESTFILE" >> $LOGFILE
if [ ! -e $RESTFILE ]
  then 
    echo "$RESTFILE CANT FIND" >>$LOGFIL
    exit 1
fi
}
function GrepFile(){
egrep -v "rechMoney|money_order" ${RESTFILE}|grep -v ‘cardNum‘ |awk -F‘[{]‘ ‘{print $1}‘|sed -nr "s#(.*)#\1\{\}#gp" >${NEWFILE}
#######CardNum
egrep -v "rechMoney|money_order" ${RESTFILE}|grep ‘cardNum‘|grep "[0-9]\{8\}\"\}$"|sed -nr ‘s#(.*)\{.*\}#\1\{\}#gp‘ >>${NEWFILE}
egrep -v "rechMoney|money_order" ${RESTFILE}|grep ‘cardNum‘|grep -v "[0-9]\{8\}\"\}$"|tr ‘{}‘ ‘1‘|sed -nr ‘s#(.*)#\1\|\{\}#gp‘ >>${NEWFILE}
######Money_Order
grep "money_order" ${RESTFILE}|sed ‘s#\\##g‘|tr ‘{‘ ‘#‘|sed -nr ‘s#(.*)\#.*\#.*money_order(.*)#\1\{\"rechMoney\2#gp‘|sed ‘s#\###g‘|sed ‘s#iPhone[0-9],[0-9]#iPhone#g‘|sed ‘s#iPod[0-9],[0-9]#iPod#g‘|sed ‘s#iPad[0-9],[0-9]#iPad#g‘|awk -F[,] ‘{print $1"\,\"recharge\"\:\"param\"\}"}‘|sed ‘s#\"data\":##g‘ >>${NEWFILE}
#######rechMoney
grep "rechMoney" ${RESTFILE}|sed ‘s#\\##g‘|tr ‘{‘ ‘#‘|sed -nr "s#(.*)\#.*rechMoney(.*)#\1\"rechMoney\2#gp"|sed ‘s#\###g‘|sed ‘s#iPhone[0-9],[0-9]#iPhone#g‘|sed ‘s#iPod[0-9],[0-9]#iPod#g‘|sed ‘s#iPad[0-9],[0-9]#iPad#g‘|awk -F‘[,]‘ ‘{print $1}‘|sed ‘s#\}##g‘|awk -F‘["]‘ ‘{print $1"\{\""$2"\""$3"\""$4"\"\,\"recharge\"\:\"param\"\}"}‘ >>${NEWFILE}
echo "`wc -l ${NEWFILE}` " >> $LOGFILE
if [ $? -ne 0 ]
  then 
    echo "`date +%F_%H\:%M\:%S`  NOT OK" >> $LOGFILE
  else 
    echo "`date +%F_%H\:%M\:%S` OK" >>$LOGFILE
fi
}
main (){
  CheckFile
  GrepFile
}
main
时间: 2024-08-07 12:41:09

shell之日志处理的相关文章

shell统计日志信息

一般应用中都会使用log4j记录日志信息,并每天生成一个日志文件,每个文件以当天的日期结尾. 如何统计并分析这些日志信息? 最简单的,使用shell脚本进行统计分析: 下面的脚本就将最近一周的日志文件的行数进行了统计并罗列出来,还和上周的进行了比较. 可以将分析出来的信息输出到一个特定文件中,将该文件发送邮件或给web服务进行显示. date echo "========================================================" echo &qu

日志分析_使用shell完整日志分析案例

一.需求分析 1. 日志文件每天生成一份(需要将日志文件定时上传至hdfs) 2. 分析日志文件中包含的字段:访问IP,访问时间,访问URL,访问状态,访问流量 3. 现在有"昨日"的日志文件即logclean.jar 3. 需求指标 a. 统计PV值 b. 统计注册人数 c. 统计IP数 d. 统计跳出率 f. 统计二跳率 二.数据分析 1. 数据采集 使用shell脚本定时上传 2. 数据清洗 过滤字段 格式化时间等字段 3. 数据分析 使用一级分区(date) 4. 数据导出 s

shell学习日志

0.shell的变量同环境变量不同,存在用户环境区. 变量赋值的方式是: variable_name = variable_value a= "hello" $a对a进行取值 关于变量,还需要知道几个与其相关的Linux命令. 首个字符必须为字母(a-z,A-Z). 中间不能有空格,可以使用下划线(_). 不能使用标点符号. env用于显示用户环境区中的变量及其取值: set用于显示本地数据区和用户环境区中的变量及其取值: unset用于删除指定变量当前的取值,该值将被指定为NULL:

shell脚本日志清理和压缩

1.日志结构 /opt/online/{123com,abccom}/log/online[1-9]/[a-z] 2.变量说明 #是否开启压缩功能(0:关闭,1:开启;若关闭压缩功能,则compressdayn无效) needcompress=1 删除14天以前的日志 deldayn=14 前1天 lastdayn=1 服务类型 allsvrtype="online1 online2 online3" 压缩5天前的日志 compressdayn=5 3.计划任务使用方法: 将该脚本本身

shell 截取日志 统计链接数 统计日志ip

按时间段获取日志 sed -n '/22\/Dec\/2015:00/,/22\/Dec\/2015:50/p' localhost_access_log.2015-11-10.txt > /tmp/acc.www.log  sed -n '/22\/Dec\/2015:00/,/22\/Dec\/2015:50/p' localhost_access_log.2015-11-10.txt |head -3  sed -n '/22\/Dec\/2015:00/,/22\/Dec\/2015:5

shell清除日志小脚本

1 #!/bin/bash 2 #清除日志脚本 3 LOG_DIR=/var/log 4 ROOT_UID=0 #用户id为0的 ,即为root 5 6 if [ "$UID" -ne "$ROOT_UID" ] #如果用户不是root,则不执行,退出 7 then 8 echo "Must be root run this sript!" 9 exit 1 10 fi 11 12 cd $LOG_DIR || { #如果切换目录失败,退出8i

shell切割日志脚本

1 #!/bin/bash 2 3 set -e 4 5 source /etc/bashrc 6 7 cd `dirname $0` 8 9 linenum=`wc -l userinfolist.txt | awk '{print $1}'` 10 11 n1=1 12 13 file=1 14 15 while [ $n1 -lt $linenum ] 16 do 17 n2=`expr $n1 + 9999` 18 sed -n "${n1}, ${n2}p" userinfo

SSH防止暴力破解 shell script

这是我的第一个Shell Script,写的乱乱糟糟,试验了一下,还是可用的,目前已经在我自己的WEB服务器上跑起来了!!~~ #!/bin/bash #这个shell script 用来防止SSH暴力破解 #Auther:Aaron Guo #Date:Jan 8 2016 #Version:1.2 # 指定该SHELL的日志文件 logfile="/var/log/blocked_ip" # 获取现在时间,用来grep /var/log/secure. (格式:mm dd HH)

[apache]用shell分析网站的访问情况

随着网站正式运行,我们可以通过通用的免费日志分析工具比如awstats获得一些实际访问网站的信息,例如每天ip量,pv量,用户所用的的浏览器,用户所用的操作系统等,但是有时候希望通过手工方式从WEB日志文件中获得一些信息,下面列出了一些最近一段时间我经常在用的命令获得访问前10位的ip地址cat access.log|gawk ‘{print $1}’ |sort|uniq -c|sort -nr |head -10访问次数最多的文件或页面cat access.log|gawk ‘{print