將文件中每一行內容填充進要執行的腳本中
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