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
#!/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
相关文章推荐
- Shell编程练习题
- 关于Shell的source、点(.)和export
- [小技巧] 查询 shell 内置命令的用法
- Shell替换:变量替换,命令替换,转义字符
- shell中的数组操作
- .bash_profile 配置
- Win7怎么打开Windows PowerShell窗口?Win7打开Windows PowerShell窗口的方法介绍
- ShellExecuteEx调用第三方程序
- shell 编程 if for while 循环体语法
- Linux-《Linux命令行与shell脚本编程大全》阅读笔记
- Shell Tips
- Linux系统命令及Shell脚本学习笔记五:字符处理
- linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )
- Linux 的shell 字符串截取很有用。有八种方法。
- Bash 下如何逐行读取一个文件
- SylixOS Shell使用
- Shell文件操作符(> >> >>>)
- [Shell]Bash变量:变量测试与内容替换
- [Shell]Bash变量:数值运算及运算符
- Linux_bash特性详解(技巧)