欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux統(tǒng)計某個字符串出現(xiàn)次數(shù)并排序的實現(xiàn)步驟

 更新時間:2024年07月23日 08:52:05   作者:smileNicky  
最近遇到一個流量異常調(diào)用的接口,所以需要通過后臺日志查看接口調(diào)用情況,先統(tǒng)計今天內(nèi)接口的調(diào)用次數(shù),再具體到對應的設備號,所以本文給大家介紹了Linux統(tǒng)計某個字符串出現(xiàn)次數(shù)并排序的實現(xiàn)步驟,需要的朋友可以參考下

業(yè)務場景

最近遇到一個流量異常調(diào)用的接口,所以需要通過后臺日志查看接口調(diào)用情況,先統(tǒng)計今天內(nèi)接口的調(diào)用次數(shù),再具體到對應的設備號,就知道哪臺設備有問題了,初步想到wc和awk命令來篩選統(tǒng)計,但是真正去寫的時候,發(fā)現(xiàn)很多寫法都不太記得了,所以花了點時間去查手冊,找資料,現(xiàn)在整理成博客,方便以后需要就馬上統(tǒng)計出來,也分享出來,希望可以幫助需要的人

項目環(huán)境

  • JDK1.8.0_111-b14
  • Linux3.10.0-1062.el7.x86_64
  • Apache Tomcat/8.5.85

實驗步驟

統(tǒng)計某個接口調(diào)用次數(shù),可以通過grep篩選出對應得到接口,然后加上wc統(tǒng)計出調(diào)用次數(shù)

cat catalina.out.2024-03-26| grep "/api/get"| wc -l

如果要統(tǒng)計這個接口具體是哪個設備調(diào)用的,每個設備具體的調(diào)用次數(shù),就稍微有點麻煩,因為接口請求后,會有一個請求參數(shù),一般是json傳參的,所以思路是先用grep定位到具體的接口,然后解析傳參json字符串,獲取設備號code,對應的值value,然后使用uniq加上sort統(tǒng)計出這個設備調(diào)用的次數(shù),具體的linux命令是:

cat catalina.out.2024-03-26| grep "/api/get"| awk -F "[,:}]" '{for(i=1;i<=NF;i++){if($i~"code"){print $(i+1)} }}' | tr -d '"'| sort | uniq -c | sort -nr

不熟悉的讀者看起來有點懵,所以,一點點分析一下,為什么這樣寫?

  • 查看日志
    因為是tomcat部署的后端服務,所以要查看tomcat的catalina.out日志文件,使用cat命令
cat catalina.out.2024-03-26
  • 篩選出具體的api接口
cat catalina.out.2024-03-26| grep "/api/get"
  • 篩選請求json字符串對應設備號的value值
    首選,我們請求參數(shù)是一串json字符串,假如是這樣的:
{ "code", "0B403940FF289695FC093BF2556FFD75", "type":1}

所以需要獲取json對應key,也就是我們的設備號code,對應的值0B403940FF289695FC093BF2556FFD75

cat catalina.out.2024-03-26| grep "/api/get" | awk -F "[,:}]" '{for(i=1;i<=NF;i++){if($i~"code"){print $(i+1)} }}'

解釋一下awk對應參數(shù)

  1. awk -F "[,:}]" :按照中括號中的內(nèi)容,}:依次分割字符串
  2. {for(i=1;i<=NF;i++){if($i~"code"){print $(i+1)} }}:遍歷篩選出來的數(shù)據(jù),匹配到code打印出對應的value

通過上面的linux命令,打印出來的是

"0B403940FF289695FC093BF2556FFD75"
"0B403940FF289695FC093BF2556FFD76"
....

如果覺得比較別扭,可以去掉"字符,使用命令

tr -d '"'

打?。?/p>

0B403940FF289695FC093BF2556FFD75
0B403940FF289695FC093BF2556FFD76
....
  • 統(tǒng)計字符串出現(xiàn)的次數(shù)
    統(tǒng)計字符串重復次數(shù),可以使用uniq -c,然后為什么還要在前面加上sort命令?因為uniq這個命令只能統(tǒng)計連續(xù)的的重復行。所以需要結(jié)合sort命令使用,先sort排序,然后uniq統(tǒng)計重復的行
sort | uniq -c

打印,可以看出可以統(tǒng)計數(shù)量了,但是,沒排序

1000 0B403940FF289695FC093BF2556FFD75
1001 0B403940FF289695FC093BF2556FFD76
999 0B403940FF289695FC093BF2556FFD77
....
  • 按照調(diào)用次數(shù)進行倒序
    sort命令的-n表示按照數(shù)值排序,-r表示按照數(shù)值降序排序,所以需要加上排序命令
sort -nr
999 0B403940FF289695FC093BF2556FFD77
1000 0B403940FF289695FC093BF2556FFD75
1001 0B403940FF289695FC093BF2556FFD76

....

總結(jié)歸納

如果遇到param=0b33131等等這樣傳參的可以使用如下命令進行篩選,意思是使用param=作為分隔符

 awk -F '(param=)' '{print $2}'

如果遇到和本文類似的場景,直接使用命令進行統(tǒng)計即可:

cat catalina.out.2024-03-26| grep "/api/get"| awk -F "[,:}]" '{for(i=1;i<=NF;i++){if($i~"code"){print $(i+1)} }}' | tr -d '"'| sort | uniq -c | sort -nr

到此這篇關于Linux統(tǒng)計某個字符串出現(xiàn)次數(shù)并排序的實現(xiàn)步驟的文章就介紹到這了,更多相關Linux統(tǒng)計字符串出現(xiàn)次數(shù)并排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Linux下強制殺死進程的方法詳解

    Linux下強制殺死進程的方法詳解

    這篇文章中我們給大家分享了關于Linux下強制殺死進程的方法技巧相關內(nèi)容,有興趣的朋友們可以參考了下。
    2018-09-09
  • Apache、Nginx下Font Awesome在 Firefox 中不顯示問題解決方法

    Apache、Nginx下Font Awesome在 Firefox 中不顯示問題解決方法

    這篇文章主要介紹了Apache、Nginx下Font Awesome在 Firefox 中不顯示問題解決方法,在配置中增加一個響應頭即可解決這個問題,需要的朋友可以參考下
    2014-07-07
  • centos8自定義目錄安裝nginx(教程詳解)

    centos8自定義目錄安裝nginx(教程詳解)

    這篇文章主要介紹了centos8自定義目錄安裝nginx的詳細教程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • Polysh命令實現(xiàn)多日志查詢的方法示例

    Polysh命令實現(xiàn)多日志查詢的方法示例

    大家應該都知道Polysh是一個交互式命令,可以在一臺服務器上批量的對一批服務器進行處理,運行交互式命令。下面這篇文章主要給大家介紹了關于利用Polysh命令實現(xiàn)多日志查詢的相關資料,需要的朋友可以參考,下面來一起看看吧。
    2017-12-12
  • 詳解linux SSH登錄流程

    詳解linux SSH登錄流程

    本篇文章通過秘匙生成等問題詳細分析了linux里SSH登錄流程,有需要的朋友參考一下吧。
    2017-12-12
  • linux如何開啟apache服務

    linux如何開啟apache服務

    這篇文章主要介紹了linux如何開啟apache服務,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-11-11
  • Ubuntu系統(tǒng)安裝Ruby的三種方法

    Ubuntu系統(tǒng)安裝Ruby的三種方法

    Ruby是一個開源的動態(tài)編程語言,本篇文章主要介紹了Ubuntu系統(tǒng)安裝Ruby的三種方法,有興趣的可以了解一下。
    2016-11-11
  • ubuntu系統(tǒng)中/etc/rc.local和/etc/init.d/rc.local的區(qū)別詳解

    ubuntu系統(tǒng)中/etc/rc.local和/etc/init.d/rc.local的區(qū)別詳解

    這篇文章主要給大家介紹了關于在ubuntu系統(tǒng)下/etc/rc.local和/etc/init.d/rc.local區(qū)別的相關資料,文中通過示例代碼介紹的非常詳細,對需要的朋友們具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-08-08
  • htaccess Rewrite中文編碼問題解決方法

    htaccess Rewrite中文編碼問題解決方法

    Seo方面對于中文地址或則文件名,在Google好像比重要大一些,今天正好看到andy的文章.轉(zhuǎn)下,以后也許會用.
    2008-10-10
  • Linux實現(xiàn)科學上網(wǎng)

    Linux實現(xiàn)科學上網(wǎng)

    本文給大家介紹的是Linux下使用plink ssh + privoxy 實現(xiàn)局域網(wǎng)共享代理,非常的全面細致,這里推薦給大家。
    2015-03-03

最新評論