awk多行日誌排序輸出
今天一同事問一個日誌排序問題 , 結果和過程可能比較簡單,如果對函式不熟悉的話,只想提一下可以另解的思路
test.data內容如下
a "t=15" 333 bbba1 xy jfdf 298
a2 zz jfdf 298
b "t=13" uv mnnn
b1 0z asdf aaa
b2 wif wfinwlk sls
c "t=14" sl sldfjdslf
c1 sfdjfdj slffj sdlkfjsdlfj
c2 slsls ssss ssss
需求是對"t=xxx"這個xxx值進行排序 ,實際上a,a1,a2可以看成同一行,只是日誌中打到了不同的行,
希望輸出是如下之類的:
b "t=13" uv mnnn
b1 0z asdf aaa
b2 wif wfinwlk sls
c "t=14" sl sldfjdslf
c1 sfdjfdj slffj sdlkfjsdlfj
c2 slsls ssss ssss
a "t=15" 333 bbba1 xy jfdf 298
a2 zz jfdf 298
或
b "t=13" uv mnnn b1 0z asdf aaa b2 wif wfinwlk sls
c "t=14" sl sldfjdslf c1 sfdjfdj slffj sdlkfjsdlfj c2 slsls ssss ssss
a "t=15" 333 bbb a1 xy jfdf 298 a2 zz jfdf 298其實如果不用asort 或asorti之類的函式可以這樣(合併行,然後提取數值成獨立一列,用sort排序):
awk 'BEGIN{row=0;} {row++; gsub(/"\n"/,"", $0); a[NR]=$0; if($2~/"/) gsub(/["|t=]/,"",$2); b[NR]=$2;} END{for(i=1;i<=row;i+=3 )print b[i]"\t"a[i]"\t"a[i+1]"\t"a[i+2]"\t"}' test.data | sort -n
輸出如下:
13 b "t=13" uv mnnn b1 0z asdf aaa b2 wif wfinwlk sls
14 c "t=14" sl sldfjdslf c1 sfdjfdj slffj sdlkfjsdlfj c2 slsls ssss ssss
15 a "t=15" 333 bbb a1 xy jfdf 298 a2 zz jfdf 298
相關文章
- awk分析日誌
- reportbuilder 日誌輸出UI
- Python輸出日誌Python
- python如何輸出日誌?Python
- Java日誌輸出問題Java
- python日誌重複輸出Python
- 【awk】按小時切割日誌
- Java 如何正確地輸出日誌Java
- C#按照日期輸出程式日誌C#
- 指令碼日誌的標準輸出指令碼
- 操作日誌記錄(包括輸出至自定義日誌檔案)
- 使用AWK規整KyLin日誌
- KubeSphere 多行日誌採集方案深度探索
- 失敗登入行為輸出至alert日誌
- 【RMAN】rman的日誌輸出功能演示
- AWK應用之統計訪問日誌
- AWK的格式化輸出和檔案中的AWK
- log4j日誌輸出級別(轉)
- logrus hook輸出日誌到本地磁碟Hook
- log4j2分層輸出日誌
- Robotframework-ride 日誌輸出中文亂碼FrameworkIDE
- (定時)任務輸出重定向到日誌
- 另一種列印輸出日誌資訊的方式
- spark指令碼日誌輸出級別設定Spark指令碼
- Hibernate 使用log4j輸出日誌
- 使用Log4j2輸出日誌演示
- 擷取字串以多行的形式輸出字串
- 使用AWK規整KyLin日誌改進
- awk統計訪問nginx日誌次數Nginx
- 排序,檔案輸入輸出排序
- logback下日誌輸出前處理操作——以日誌脫敏為例
- Web實時日誌輸出檢視管理系統Web
- python怎麼將列印輸出日誌檔案Python
- linux自動清理Docker標準輸出日誌LinuxDocker
- Spring AOP實現統一日誌輸出Spring
- 實時檢視模擬器的日誌輸出
- MySQL 使用tee記錄語句和輸出日誌MySql
- Laravel 中輸出 SQL 語句的到 log 日誌LaravelSQL