高效 linux 腳本 ---- 取出文件可變參數賦值到執行腳本和 AWK 實戰

將文件中每一行內容填充進要執行的腳本中

nohup cat /home/admin/XXX/logs/tradeIdList.log.2019-04-28 
| xargs -i curl 'localhost:7001/compare/compareData.htm?TradeId={}' &

開頭的 nohup 和 最後的 & 是保證就算 terminal 斷開了還能有獨立進程繼續執行這個命令

 

 

awk:
記錄(默認就是文本的每一行)
字段 (默認就是每個記錄中由空格或TAB分隔的字符串)
$0就表示一個記錄,$1表示記錄中的第一個字段。
~表示正則匹配開始,兩個//中間是正則規則
NF表示一條記錄的字段的數目
The awk function split(s,a,sep) splits a string s into an awk array a using the delimiter sep

 

# xdb 媒體查詢rt   輸出請求次數和RT均值
grep -v 'status=4' XXX.log.2019-10-12|awk -F ',' 'BEGIN{requestNum=0;sumRt=0;}{if($0~/rt/&&$0~/findXXXPayments/){for(i=1;i<=NF;i++){if($i~/^rt/){split($i,a,"=");sumRt+=a[2];requestNum+=1;}}}}END{print requestNum,sumRt/requestNum;}'

# hbase api查詢rt   
grep -v 'status=4' XXX.log.2019-06-01|awk -F ',' 'BEGIN{requestNum=0;sumRt=0;}{if($0~/rt/&&$0~/queryXXX/){for(i=1;i<=NF;i++){if($i~/^rt/){split($i,a,"=");sumRt+=a[2];requestNum+=1;}}}}END{print requestNum,sumRt/requestNum;}'
# 打印 當天pubSelecPageRT 秒數大於1的. 15:00 時候beta機器是 139條
grep -v 'tkStatus=4' XXX.log.2019-09-04 | awk -F ',' 'BEGIN{rt=0;total=0}{if($0~/pubSelecPageRT/&&$0~/findPublisherPayments/){for(i=1;i<=NF;i++){if($i~/^pubSelecPageRT/){split($i,a,"=");if(a[2]>1000){rt+=a[2];total+=1}}}}}END{print rt/total,total;}'
### 日誌樣例
### 2019-04-17 16:26:26 ,dbInsPub_2=1,rt=629,hbaseRT=18,rot=save,detInsertRT=278,status=11,pubInsertRT_2=272,tId=412666785158244658,dbInsDet=1,ts=1555489586

### 取出內容寫到文件
grep 'status=3' XXX.log.2019-04-16 | awk -F ',' '$0~/rt/ && $0~/save/{for(i=1;i<=NF;i++){if($i~/^tId/){split($i,a,"=")};print a[2];}}'|tee tId.txt

grep 'status=3' /home/admin/output/XXX.log.2019-04-20 |grep -v 'rot=saveTags'| awk -F ',' '$0~/rt/ && $0~/save/{for(i=1;i<=NF;i++){if($i~/^tId/){split($i,a,"=");print a[2];}}}'|tee ~/tId2.txt  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章