話不多說,老闆,上硬菜
#!/bin/bash #shell指令碼宣告
a=`ls log*`#將當前目錄下的log開頭的日誌檔名稱存入變數a
for i in $a #開始迴圈變數a
do #進入迴圈
echo $i #輸出檔名
b=`cat $i|awk -f'|' ''`#定義變數b為檔案中每一行最後乙個以|為分隔符的引數和行號,輸出來是這樣的:11-1,11是最後乙個引數,1是行號
for x in $b #開始迴圈變數b,迴圈每一行的最後乙個引數和行號
do #進入迴圈
c=`echo $x|awk -f'-' ''` #定義變數c為最後乙個引數的值
v=`echo $x|awk -f'-' ''` #定義變數v為行號
if [ "$c" == "30" ];then #判斷最後乙個引數是否為30
pd=`echo $x|awk -f'|' ''` #如果條件為真,獲取那一行$11的值並存為變數pd
if [[ $pd -gt 10000 ]] #判斷pd的值是否大於10000
then
d=`awk -v bl=$v 'nr==bl' $i` #如果大於10000則將那一行的資料存為變數d
echo "$d" >> /tmp/$i.txt #將那一行的資料追加到/tmp/目錄下的新檔案中,新檔案名字為當前迴圈的日誌檔名
elif [[ $pd -lt 9900 ]] #判斷pd的值是否小於9900
then
d=`awk -v bl=$v 'nr==bl' $i` #如果小於9900則將那一行的資料存為變數d
echo "$d" >> /tmp/$i.txt #將那一行的資料追加到/tmp/目錄下的新檔案中,新檔案名字為當前迴圈的日誌檔名
fi #結束判斷
fi #結束判斷
done #結束迴圈
echo "ok!" #乙個檔案迴圈完之後輸出ok!然後進入下一次迴圈
done #迴圈結束
shell指令碼的運用
一 編寫簡單的指令碼 shell指令碼的命令工作方式有兩種 互動式和批處理。互動式 interactive 使用者每輸入一條命令就立即執行。批處理 batch 由使用者事先編寫好乙個完整的 shell 指令碼,shell 會一次性執行指令碼 中諸多的命令。首先介紹乙個簡單的shell指令碼例子 雖然...
shell指令碼之awk
一 什麼是awk awk其實相當於一門可以處理資料文字的語言,這麼說的原因是其具有很多類c語言的語法,如 變數,陣列,函式,流程控制等,其由aho,weinberger,kernighan大約在1977年開發完成,隨後被引入unix linux中。二 awk可以幹什麼 awk是乙個非常強大的資料處理...
shell指令碼 awk的用法
語法格式 awk 選項 指令 操作檔案 常用選項 f 指定分隔符,分隔符用 引起來 v var value在awk程式開始之前指定乙個值valu給變數var,這些變數值用於awk程式的begin快 f 後面跟乙個儲存了awk程式的檔案,代替在命令列指定awk程式 awk 1.txt 逐行讀取檔案1....