1. 程式人生 > >shell使用(1)篩選日誌內容&重新執行刪除操作

shell使用(1)篩選日誌內容&重新執行刪除操作

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