awk處理一個需求備忘

1. 需求描述vim

2013年9月17日發佈抽獎活動,抽獎活動接口doLottery在BuyItemServer,調用了GameServer的presentItem接口發放玩家抽到的物品,GameServer緩存了物品列表,系統一共部署了7臺GameServer,重啓後,有一臺GameServer拉取物品列表緩存失敗(緣由目前未知,在查找中),致使presentItem接口發送物品失敗。如今須要根據BuyItemServer中的doLottery記錄的lottery_fail日誌,來給這部分玩家補發抽到的物品。緩存

其中,lottery_fail日誌格式以下:工具

補發物品經過以前實現的工具來完成,補發工具要求的輸入文件格式是:日誌

key|id_numblog

例如:接口

要作的事情就是,根據最後一列記錄的物品id和數量,處理成符合格式要求的文件。部署

2. 實現步驟awk

2.1 處理9月17日到今日的全部日誌文件,提取第五列和最後一列到一個文件中im

彙總處理後獲得的文件格式以下:db

若第二列中僅包含一個物品項,會很容易處理,如今的問題是第二列中可能包含多個物品項(每一箇中括號內是一個物品項),考慮用awk將第二列中的物品項分開處理,每個物品項,和第一列的號碼從新組合成一個記錄。

2.2 特殊處理文件,使文件更容易用awk處理

在vim的命令模式下,使用

%:s/\]\[/\]|\[/g

將文件中全部的"]["替換爲"]|[":

2.3 使用以下的awk命令達到目的:

處理後的文件格式以下:

想辦法將"["和"]"去掉,"="替換爲"_",便可做爲輸入文件用工具進行物品的補發。

相關文章
相關標籤/搜索