成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

日志處理中shell命令技巧總結

運維 系統(tǒng)運維
日志文件的輸入是動則幾個G的文本。從N個這樣的文件中得到一個列表,一個數(shù)字,一個比例。在什么工具都沒有情況下,用shell命令不僅是驗證系統(tǒng)數(shù)據(jù)的準確性的方法,也是一個很好的學習過程。本文將日志處理中shell命令技巧做了一個小結,感興趣的朋友一起來看看。

陰差陽錯的做的日志分析,前途未卜的這段日子,***還有點意思的可能就是手動的處理大量日志。總結一下。

日志文件的輸入是動則幾個G的文本。從N個這樣的文件中得到一個列表,一個數(shù)字,一個比例。在什么工具都沒有情況下,用shell命令不僅是驗證系統(tǒng)數(shù)據(jù)的準確性的方法,也是一個很好的學習過程。

使用cut命令切割日志行

下面的一行典型的apache訪問日志:

120.51.133.125 - - [26/Apr/2013:12:20:06 +0800] "GET /skins/skin_homepage.php?display=wvga&lang=ja_JP&pixel=720X1280&density=2.0&version=5.7&key=5146f54950f09f71750005ef&uid=1 HTTP/1.1" 200 4847 "http://t.co/rww3WDuhS5" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; YTB730)" 0

如果需要得到IP地址可以使用cut命令:

  1. cat log | cut -d ' ' -f1 

-d ' '表示按照空格將行切開,-f1 取***個字段,這樣得到的結果就是IP列表:

有時候拿到的文件是\t分隔,也可以使用cut切開,只不過需要多寫一個$。

  1. [l]$ cat log | cut -d '\t' -f1 cut: the delimiter must be a single character #-d '\t'會報錯的 cut -f2 -d$'\t' infile #work 

使用tr命令去掉字符,替換字符。如果拿到分割的文件:

  1. cat log | tr -s ' ' ',' 

將空格替換成,文件變成csv:

  1. cat log | tr -d ' ' 

上面的命令直接刪除空格。

日志處理后經(jīng)常會出現(xiàn)空行,tr命令去掉空行的原理就是將連續(xù)兩個換行替換成一個換行:

  1. cat log | tr -s '\n\n' '\n' 

使用uniq命令去重

試想得到IP列表,欲得到獨立訪問的IP列表。

  1. [l]$ cat log | cut -d ' ' -f1 | uniq -u 

如果不僅僅是去重,還想統(tǒng)計每個IP訪問次數(shù),可以加一個參數(shù)c:

  1. [l]$ cat log | cut -d ' ' -f1 | uniq -uc 

得到的格式形如:

  1. 1 126.193.38.128 5 49.98.156.154 

前面的數(shù)字就是出現(xiàn)的次數(shù)。

使用awk/seed來處理日志

awk/seed是處理日志的最終的萬金油。確實是什么都可以做。awk/seed是一門很大的學問。這里取我碰到的一個日志,日志格式形如:

  1. display=wvga|||lang=ja_JP|||isActive=1|||pixel=720X1280|||density=2.0|||version=5.7|||key=5146f54950f09f71750005ef|||out=abc'3|||uid=1 

如果我需要得到isActive=1的日志行,取到out=中'前一段,如上面的abc。

  1. cat l | grep "isActive=1|" | awk 'match($0,/out=[^\x27]+/){print substr($0,RSTART+4,RLENGTH-4)}' 

grep的功能是篩選isActive=1的行。awk 后面跟''的是awk語言。$0總是代表當前匹配的字段值,match substr是awk可以用的函數(shù),當match時后面{}中的代碼才會執(zhí)行。當match,$0就是正則匹配的部分。RSTART,RLENGTH是awk可以使用的常量,分別表示開始匹配的開始下標,RLENGTH是匹配的長度。

在''中需要再使用'光轉義是不行的,得用16進制的代碼\x27。轉16進制可以使用python代碼 "'".encode("hex")得到

//驚訝awk就這么簡單的解釋了,可這連入門都算不上。

集合操作

試想我想得到兩個列表的交際,并集,差集,統(tǒng)計中經(jīng)常會碰到,比如我想獲得昨天今天都在訪問的IP,其實就是今天的IP列表和昨天IP列表的交集。

先定義兩個簡單的文件:

  1. [ l]$ cat a.txt 1 2 3 4 5 [ l]$ cat b.txt 4 5 6 7 8 9 

如果想得到ab的交集4 5 ,可以使用下面的命令:

  1. sort -m a.txt b.txt | uniq -d 4 5 

如果要得到并集1-9,可以:

  1. sort -m a.txt b.txt | uniq 1 2 3 4 5 6 7 8 9 

如果想得到ab的差集,即a去掉ab的交集1 2 3

  1. comm -23 a.txt b.txt 1 2 3 

同理:ba的差集:

  1. comm -13 a.txt b.txt comm -23 b.txt a.txt 

上述兩個命令等價。

comm命令就是compare功能,如果什么參數(shù)都不帶呢得到的什么呢?

  1. comm a.txt b.txt 1 2 3 4 5 6 7 8 9 

diff命令以前經(jīng)常看代碼改了哪些:

  1. diff a.txt b.txt  1,3d0 < 1 < 2 < 3 5a3,6 > 6 > 7 > 8 > 9 
責任編輯:黃丹 來源: blogjava.net
相關推薦

2019-12-01 22:59:43

Linux shell命令進程

2017-03-23 14:18:30

LinuxShell命令

2011-03-17 14:09:25

Oracle數(shù)據(jù)庫字符

2021-08-02 07:50:42

腳本Shell日志

2010-03-03 13:12:56

Python圖像處理

2009-07-31 15:39:00

linux cd命令詳目錄切換技巧總結

2010-10-08 10:03:52

JavaScript圖像

2021-05-31 12:05:46

Shell命令Linux

2016-12-15 13:47:29

C語言預處理命令

2018-04-20 11:33:22

不平衡數(shù)據(jù)數(shù)據(jù)集模型

2009-06-25 14:05:40

Java應用技巧

2021-01-28 08:12:15

Linux命令技巧

2024-03-28 08:15:09

Spring技巧配置

2011-06-03 10:00:51

2010-03-29 14:55:18

Nginx日志

2013-01-30 13:18:38

Redis監(jiān)控

2010-01-27 17:45:15

Android應用技巧

2020-06-04 10:49:53

Pandas字符串技巧

2017-11-07 13:24:38

Pythontime模塊datetime

2019-09-16 08:28:17

Mysql數(shù)據(jù)庫binlog
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲a视 | 热99精品视频 | 国产一级片91 | 国产精品区二区三区日本 | 91看国产 | 日韩精品在线看 | 日韩视频在线一区 | 尤物视频在线免费观看 | 国产精品一区二区久久精品爱微奶 | 91久久精品一区二区二区 | xx视频在线观看 | 久久99深爱久久99精品 | 欧美日韩专区 | 国产精品久久久久久52avav | 免费视频一区二区 | 免费在线日韩 | 精品一区二区久久久久久久网精 | 亚洲黄色在线 | 国产免国产免费 | 成人国产精品入口免费视频 | 亚洲精品日韩综合观看成人91 | 亚洲午夜精品视频 | 亚洲国产欧美精品 | 久久国产精品无码网站 | 精品视频在线播放 | 国产精品一区二区av | 欧美xxxx色视频在线观看免费 | 国产美女精品 | 三级免费av | 国产一区二区激情视频 | 99久久精品免费看国产四区 | 久久久女女女女999久久 | 亚洲成人毛片 | 久久国产视频网 | 毛片一级片| 97人人澡人人爽91综合色 | 不卡视频在线 | 91久久久久久久久 | 综合色播 | 国产在线视频三区 | 久久国产精品-久久精品 |