簡體   English   中英

想要從具有頁眉頁腳的文件中分隔數據,以便數據整理以進行性能分析

[英]want delimited data from file which has headers footers,for data crunching to do performance analysis

我有一個包含頁眉和頁腳的文件,並且數據經過多次迭代(帶有頁眉和頁腳),我想定界數據並且不希望頁眉頁腳。 我的目的是為了進行數據分析以進行性能分析,只是分析工作並不順利。

文件中的數據:

   09:31:56 12/13/11 r/w I/O per second KBytes per sec  Svt ms     IOSz KB     
              VVname      Cur  Avg  Max  Cur  Avg  Max Cur Avg   Cur   Avg Qlen
               admin   r    0    0    0    0    0    0 0.0 0.0   0.0   0.0    -
               admin   w   17   17   17   68   68   68 0.2 0.2   4.1   4.1    -
               admin   t   17   17   17   68   68   68 0.2 0.2   4.1   4.1    0
 z0001_app0136_s.254   r    0    0    0    0    0    0 0.0 0.0   0.0   0.0    -
 z0001_app0136_s.254   w    0    0    0    0    0    0 0.0 0.0   0.0   0.0    -
 z0001_app0136_s.254   t    0    0    0    0    0    0 0.0 0.0   0.0   0.0    0
....................
....................

-----------------------------------------------------------------------------------
  Footer            394   r   87   87      4354 4354      2.7 2.7  49.9  49.9    -
  Footer            394   w  126  126       906  906      0.1 0.1   7.2   7.2    -
  Footer            394   t  213  213      5260 5260      1.2 1.2  24.7  24.7    0
   09:32:57 12/13/11 r/w I/O per second KBytes per sec    Svt ms     IOSz KB     
              VVname      Cur  Avg  Max  Cur  Avg  Max  Cur  Avg   Cur   Avg Qlen
               admin   r    0    0    0    0    0    0  0.0  0.0   0.0   0.0    -
               admin   w   32   24   32  130   99  130  0.2  0.2   4.1   4.1    -
               admin   t   32   24   32  130   99  130  0.2  0.2   4.1   4.1    0
 z0001_app0136_s.254   r    0    0    0    0    0    0  0.0  0.0   0.0   0.0    -
 z0001_app0136_s.254   w    0    0    0    0    0    0  0.0  0.0   0.0   0.0    -

文件中的數據又一次又一次地遍歷。

清除此類數據的常用方法是使用grep,以選擇所需的數據或排除不需要的數據。 在這種情況下,看起來所有所需的行都有一個字母(r,t或w),每邊都有一個空格,而所有不需要的行都沒有。 編輯:頁腳行稍后添加到問題中,因此添加了grep -v命令以排除頁腳。)

如果數據在文件d中,您將說:

grep ' [rtw] ' d | grep -v Footer

然后選擇數據行,但不選擇頁眉,頁腳或空白行。 要使用數據創建名為t的文件,請說:

grep ' [rtw] ' d | grep -v Footer > t

如果實際數據(相對於出現的問題)使用制表符或空格而不是空格,則使用'[[:space:]][rtw][[:space:]]'作為搜索字符串,而不是' [rtw] ' 另外,當不使用-i時,grep區分大小寫。 如果排除的術語同時出現(有時是大寫的,有時是小寫的),則對grep選項使用-iv而不是-v

grep '[[:space:]][rtw][[:space:]]' d  | grep -iv footer > t

您應該真正格式化輸入以包含足夠數量的樣本數據。 另外,您應該添加一些預期的輸出以顯示您要完成的工作。 您可能還想考慮閱讀並回答問題下的評論。

就是說,這行GNU awk 可以幫助您:

awk '$1 !~ /^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]$/ && $1 != "VVname" && $1 != "Footer"' file.txt

這是我對這個問題的看法:

#!/bin/bash
#
# file: 12523967.sh
# Needs at least bash version 3.x

: ${DEBUG:=0}
: ${LOGFILE:="./12523967-data.log"}

TOKENS="VVname Flag Cur_IO_s Avg_IO_s Max_IO_s Cur_KB_s Avg_KB_s Max_KB_s Cur_Svt_ms Avg_Svt_ms Cur_IOSz_KB Avg_IOSz_KB Qlen"
DREGEX="^[[:digit:]]{2}:.*$"

while IFS=, read $TOKENS; do
    ## Skip entry if empty, or contains 'Footer' or 'Timestamp' or 'VVname'
    if [[ -z $VVname || $VVname =~ $DREGEX || $VVname =~ VVname || $VVname =~ Footer ]]; then
        continue
    fi
    [[ $DEBUG -eq 1 ]] && printf "%s %s %s %s %s %s\n" \
                "$VVname $Flag" \
                "$Cur_IO_s $Avg_IO_s $Max_IO_s" \
                "$Cur_KB_s $Avg_KB_s $Max_KB_s" \
                "$Cur_Svt_ms $Avg_Svt_ms" \
                "$Cur_IOSz_KB $Avg_IOSz_KB" \
                "$Qlen"

    # [...] Do whatever you have to do with the named entries

done < <(sed -e 's/^ *//g;s/  */,/g;s/^[\.-]*//g;' $LOGFILE)

使用您的示例(包括“ ...”和“ ---”行,因為我不太確定它們是否構成您的日志文件輸出的一部分),使用DEBUG=1的調用將按其字段打印出已分析的行名稱:

$ DEBUG=1 ./12523967-parse.sh 
    admin r 0 0 0 0 0 0 0.0 0.0 0.0 0.0  -
    admin w 17 17 17 68 68 68 0.2 0.2 4.1 4.1  -
    admin t 17 17 17 68 68 68 0.2 0.2 4.1 4.1  0
    z0001_app0136_s.254 r 0 0 0 0 0 0 0.0 0.0 0.0 0.0  -
    z0001_app0136_s.254 w 0 0 0 0 0 0 0.0 0.0 0.0 0.0  -
    z0001_app0136_s.254 t 0 0 0 0 0 0 0.0 0.0 0.0 0.0  0
    admin r 0 0 0 0 0 0 0.0 0.0 0.0 0.0  -
    admin w 32 24 32 130 99 130 0.2 0.2 4.1 4.1  -
    admin t 32 24 32 130 99 130 0.2 0.2 4.1 4.1  0
    z0001_app0136_s.254 r 0 0 0 0 0 0 0.0 0.0 0.0 0.0  -
    z0001_app0136_s.254 w 0 0 0 0 0 0 0.0 0.0 0.0 0.0  -

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM