Shell 用于检查过去10天日志的Unix脚本

Shell 用于检查过去10天日志的Unix脚本,shell,unix,scripting,teradata,Shell,Unix,Scripting,Teradata,我有一个日志表,它只维护一天,表中的数据只存在一天。但是,它的日志存在于unix目录中 我的要求是检查过去10天的日志,并找到加载的记录数 在日志文件中,模式如下(teradata的fastload日志) 我想对脚本进行参数化(参数将是stage table name),它查找过去10天插入到表和错误表中的记录 这可能吗?有人能帮我构建这个unix脚本吗 日志目录中有许多日志。如果a只想检查以下内容,该怎么办: bash-3.2$ ls -ltr 2018041*S_EVT_ACT_FL

我有一个日志表,它只维护一天,表中的数据只存在一天。但是,它的日志存在于unix目录中

我的要求是检查过去10天的日志,并找到加载的记录数

在日志文件中,模式如下(teradata的fastload日志)

我想对脚本进行参数化(参数将是stage table name),它查找过去10天插入到表和错误表中的记录

这可能吗?有人能帮我构建这个unix脚本吗

日志目录中有许多日志。如果a只想检查以下内容,该怎么办:

    bash-3.2$ ls -ltr 2018041*S_EVT_ACT_FLD*
-rw-rw----+  1 edwops   abgrp      52610 Apr 10 17:37 20180410173658_S_EVT_ACT_FLD.log
-rw-rw----+  1 edwops   abgrp      52576 Apr 11 18:12 20180411181205_S_EVT_ACT_FLD.log
-rw-rw----+  1 edwops   abgrp      52646 Apr 13 18:04 20180413180422_S_EVT_ACT_FLD.log
-rw-rw----+  1 edwops   abgrp      52539 Apr 14 16:16 20180414161603_S_EVT_ACT_FLD.log
-rw-rw----+  1 edwops   abgrp      52538 Apr 15 14:15 20180415141523_S_EVT_ACT_FLD.log
-rw-rw----+  1 edwops   abgrp      52576 Apr 16 15:38 20180416153808_S_EVT_ACT_FLD.log
谢谢

find . -ctime -10 -type f -print|xargs awk -F= '/Total Records Read/ {print $2}'|paste -sd+| bc
find-ctime-10-type f-print
获取当前工作目录中10天或更短时间的文件名。要在其他目录上运行,请将
替换为路径

awk-F='/Total Records Read/{print$2}'
using=作为字段分隔符,过滤掉包含关键字短语的任何行的后半部分
读取的记录总数

粘贴-sd+
添加加号


bc
将数字和运算符流计算成一个答案

我无法使用find。因为系统是Solaris,所以find没有maxdepth future。我使用用例创建一个过滤器2并使用它

ls -l --time-style=long-iso FOLDER | grep -E $FILTER.
但我知道这不是个好办法

LOCAL_DAY=`date "+%d"`
LOCAL_MONTH=`date "+%Y-%m"`
LASTTENDAYE_MONTH=`date --date='10 days ago' "+%Y-%m"`

case $LOCAL_DAY in 
    0*)
       FILTER2="$LASTTENDAY_MONTH-[2-3][0-9]|$LOCAL_MONTH";;
    1*)
       FILTER2="$LOCAL_MONTH-0[0-9]|$LOCAL_MONTH-1[0-9]";;
    2*)
       FILTER2="$LOCAL_MONTH-1[0-9]|$LOCAL_MONTH-2[0-9]";;
esac

谢谢,沃斯普林,如果我想检查以下特定文件:bash-3.2$ls-ltr 2018041*S_EVT_ACT_FLD*-rw rw--+1 edwops abgrp 52610 Apr 10 17:37 20180410173658_S EVT_ACT_FLD.log-rw rw--+1 edwops abgrp 4511 18:12 20180411181205_EVT_ACT_FLD.log还收到错误:rgs:儿童被信号杀死13稍微简化一点,试着让它一直执行到awk部分。粘贴-sd+的用途是什么?正如我在上面解释的(很抱歉我不清楚),
paste-sd+
命令在输入中添加了一个加号。它还将各条线连接在一起。我建议您运行
seq 19
,然后运行
seq 19 | paste-sd+
,以演示此日志表,该日志表只维护了一天,这是Teradata的QueryLog吗?然后,它会被卸载到历史数据库中,即所有信息都应保留在系统中。亲爱的Dnoeth,不,这是每天运行的fload日志。如果您需要超过1天的时间,您就不应该删除,不能有大量数据:-)
LOCAL_DAY=`date "+%d"`
LOCAL_MONTH=`date "+%Y-%m"`
LASTTENDAYE_MONTH=`date --date='10 days ago' "+%Y-%m"`

case $LOCAL_DAY in 
    0*)
       FILTER2="$LASTTENDAY_MONTH-[2-3][0-9]|$LOCAL_MONTH";;
    1*)
       FILTER2="$LOCAL_MONTH-0[0-9]|$LOCAL_MONTH-1[0-9]";;
    2*)
       FILTER2="$LOCAL_MONTH-1[0-9]|$LOCAL_MONTH-2[0-9]";;
esac