您的位置:首页 > 运维架构 > Shell

shell使用(1)筛选日志内容&重新执行删除操作

2015-08-31 17:59 561 查看
shell脚本,查询某一时间段的所有log,筛选出所有删除成功的记录,提取记录中的ID,判断ID是否删除成功,并重新执行删除操作。

#!/bin/sh
file_base_front="indexing-2015-08-2";
file_base_mid="_";
file_base_end=".0.log";

out="./outlog/out;
# 也可以直接通过(<span style="font-family: Arial, Helvetica, sans-serif;">for ofile in ./*</span><span style="font-family: Arial, Helvetica, sans-serif;">)遍历当前目录下所有文件,减少定义的变量,可读性更好。</span>
for ((file_front=5;file_front<=6;file_front++))
do
#082500-082519
for ((file_mid=0;file_mid<=1;file_mid++))
do
for ((file_end=0;file_end<=9;file_end++))
do
# 用变量组成所有待查询的文件名,通过grep,筛选出所有“delete”的“wallpaper”记录
<span style="font-family: Arial, Helvetica, sans-serif;">cat ${file_base_front}$file_front${file_base_mid}$file_mid$file_end${file_base_end} | grep wallpaper | grep delete_vertex > ${out}$file_front${file_base_mid}$file_mid$file_end</span>
done
done
# 082520-082523
file_mid=2;
for ((file_end=0;file_end<=3;file_end++))
do
cat ${file_base_front}$file_front${file_base_mid}$file_mid$file_end${file_base_end} | grep wallpaper | grep delete_vertex > ${out}$file_front${file_base_mid}$file_mid$file_end
done
done

# 筛选后的记录存放在./outlog/目录下,首先删除所有空文件
for ofile in ./outlog/*
do
[ ! -s $ofile ] && rm -f $ofile
done

outfile=".suc"

# 在这些记录中,选择删除成功的记录,重定位到新文件中
for ofile in ./outlog/*
do
cat $ofile | grep "数据成功" > $ofile$outfile
done

resdir="./resdir/";
findir="_find";
deletedir="_delete";

#使用字符串截取,提取记录中的entryID
for ofile in ./outlog/*.suc
do
cat $ofile | while read myline
do
str=${myline#*wallpaper/}
res=${str%/*}

#对每个id执行一遍查询和delete操作,并存储调用curl的结果,重定位到文件中
curl -X DELETE http://localhost:1234/delete/$res/ > $resdir$res$deletedir
curl -X POST http://localhost:1234/-d '{"id":"$res", "type":100}' > $resdir$res$findir

echo $res
done
done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: