<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用 awk 命令統(tǒng)計文本

          共 1331字,需瀏覽 3分鐘

           ·

          2022-04-23 21:14

          2022-04-19 11:25:15.008,b4d13bfca8fe4b93a85e65a88520d945,LogScheduler#printLog,10ms,Y,xxxxxxxx
          2022-04-19 12:01:15.002,4d10d093dce8491c8ae3c1bff6dbd7c5,LogScheduler#printLog,999ms,N,xxxxxxxx
          2022-04-19 12:12:16.003,d9d1f4b121764edb8cb260417cd75229,LogScheduler#printLog,5ms,Y,xxxxxxxx
          2022-04-19 12:15:22.004,e3e10340e51c49ce9d688541ba799283,LogScheduler#printLog,1001ms,N,xxxxxxxx
          2022-04-19 12:55:59.005,209d2f1407894da5aa0f44de621515c7,LogScheduler#printLog,1020ms,Y,xxxxxxxx
          2022-04-19 13:25:15.006,e09f75c6d0d849068ae713820c94f3f9,LogScheduler#printLog,15ms,Y,xxxxxxxx
          2022-04-19 13:25:15.008,b4d13bfca8fe4b93a85e65a885231231,LogScheduler#printLog,99ms,Y,xxxxxxxx

          有那么一段日志,需要統(tǒng)計出來以下信息:

          • 輸出耗時超過 1000ms 并且結(jié)果是 Y 的整行
          • 12:00 ~ 13:00 之間成功的行數(shù),成功率

          日志格式:時間,traceId,類方法名,耗時,結(jié)果,內(nèi)容

          看到這里,如果小伙伴已經(jīng)有思路了,那就沒必要往下面看了,直接拉到最后,點贊、在看。

          這里要使用的就是 awk 命令。

          常用內(nèi)置變量

          awk 的主要功能就是對文本進行統(tǒng)計報告,具體介紹可以看菜鳥筆記[1],下面僅介紹幾個常用的內(nèi)置變量。

          • FS:行字段分隔符,默認是空格,可以使用-F指定分隔符
          • 1……:行字段分隔符分割后獲取指定部分,$0 是獲取整行記錄
          • NF:當前行的字段數(shù)量
          • RS:行記錄分隔符
          • NR:行號

          大概常用的就這幾個,下面看一下實際使用效果

          效果展示

          notes??%?>?awk?'{print?$0}'?c.log

          因為 $0 就代表整行記錄,所以輸出結(jié)果如下。

          那 $1 的結(jié)果呢?

          因為默認是空格作為分隔符,所以輸出的結(jié)果就只有日期了。

          指定分隔符為,之后,看一下輸出結(jié)果:

          題目答案

          基本上熟悉了怎么使用剩下的就比較好辦了。

          • 耗時超過 1000ms 且 Y 的行
          notes??%?>?awk?-F?','?'{split($4,a,"ms");?if(a[1]?>?1000?&&?$5?==?"Y")?print?$0}'?c.log

          • 12:00 ~ 13:00 之間成功的行數(shù),成功率
          awk?-F?','?'BEGIN{count=0;sum=0}{if($1>="2022-04-19?12:00:00.000"?&&?$1<"2022-04-19?13:00:00.000"){sum+=1;if($5?==?"Y")count+=1}}END{print?NR,count,sum,count/sum}'?c.log

          總記錄 7 條, 12:00 ~ 13:00 之間成功的行數(shù)是 2,成功率 0.5。

          總結(jié)

          上面只是在工作中可能會遇到的一個場景,所以記錄下來,如果小伙伴有更合適的方式來統(tǒng)計計算,歡迎留言。

          引用鏈接:

          [1]

          菜鳥筆記: https://www.runoob.com/linux/linux-comm-awk.html


          - -


          瀏覽 62
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  丁香五月婷婷啪啪 | 日本黄色自拍视频 | 四虎三级片| 蜜桃免费网站 | 麻豆精品无码国产 |