shell與awk的指令碼運用(二)

2021-08-17 17:10:19 字數 1005 閱讀 7689

話不多說,老闆,上硬菜

#!/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....