awk來呼叫linux命令解決個日誌採集問題

2021-06-22 06:59:26 字數 925 閱讀 7369

做了個web頁面的日誌查詢工具,給用服同事使用,以應對伺服器太多的困擾,需要將現網日誌拿回來家裡進行模擬。

部件a有10臺主機,將某小時內檔案壓縮為a_ip.tar.gz。每個tar.gz包解壓後為201405291200.tar.gz這種包含具體日誌檔案的壓縮包。問題是如a部件10臺主機到本地後兩台伺服器上,解壓總會有同名檔案,簡單重新命名分鐘是沒法解決(最後的c++模組按照分鐘取了壓縮包的.前面的12位),因為壓縮包2分鐘乙個(這個日誌量是大了點啊)於是決定重新命名解壓後檔案,將a_ip.tar.gz解壓後將201405291200.ip.tar.gz形式。

決定指令碼實現,ip通過引數形式傳遞

#!/bin/bash

#解壓日誌壓縮包,重新命名加上.ip格式

tar xvf *$1.tar.gz

ls 2014* |cat | awk -f "." ''"

suffix=".tar.gz"

filename=$1suffix

newfilename=$1".""'$1'"suffix

print newfilename

system("mv "filename" "newfilename)

}'

需要注意的是:

1.awk呼叫linux命令使用類似c語言的system呼叫方式

2.system中,如果沒有變數傳遞,直接system("touch hello.txt")即可,如果hello.txt是awk傳遞過去的如

awk ''
在system裡就不用雙引號括起來了,使用system("touch " filename),注意touch後留個空格,filename不用加$

3.awk要使用shell傳過來的引數,如上,執行./hello.sh 89時,89作為$1傳遞過來 ,以" '$1' "存在

awk呼叫shell命令

awk可以用getline或system來呼叫shell的命令 1 getline 通過在awk內使用管道,可以把shell命令的輸出傳送給awk awk begin sun mar 8 22 21 52 2009 順便說一下getline的其他用法.getline除了可以通過管道從shell命令裡...

linux命令 awk學習

我們在面試中經常被問到的linux命令 就都會包括awk命令的使用,下面我向大家總結awk命令的詳細使用。希望能給大家一些幫助。在國內很多大型公司面試後台程式設計師的時候無一例外都會問到下面這個題目 請統計某個apache或者nginx 內的log檔案,並求出裡面ip數的top10 當然,這個問題不...

linux 常用awk命令

linux awk命令詳解awk是乙個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。awk有3個不同版本 awk nawk和gawk,未作特別說明...