1、統(tǒng)計某個字符的個數(shù),以a為例
站在用戶的角度思考問題,與客戶深入溝通,找到自貢網(wǎng)站設計與自貢網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設公司、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、國際域名空間、虛擬空間、企業(yè)郵箱。業(yè)務覆蓋自貢地區(qū)。
grep -o a urifle
awk -F "" '{for(i=1;i=NF;++i) if($i=="a") ++sum}END{print sum}' urfile
#-F ""中間必須要有空格 "a"必須使用雙引號,字符串
awk -F "" '{for(i=1;i=NF;i++)a[$i]++}END{for(j in a) if(j=="c") print a[j]}' urfile
#
2、儲存在變量里
echo "0001111" |tr -cd 1 |wc -c
如果有時間可以看看《Linux就該這么學》,里面有各種Linux相關知識
在上文中,我們已經(jīng)詳細介紹 linux 三劍客的基本使用,接下來我們看看具體在性能測試領域的運用,本文主要介紹的是在 Tomcat 和 Nginx access日志的統(tǒng)計分析。
server.xml 使用配置方式,%D-請求時間,%F-響應時間
字段說明如下:
日志樣例:
使用默認 combined 的經(jīng)典格式上擴展 response_timeupstream_response_time
nginx.conf 使用配置方式:
字段說明如下:
日志示例:
為了能理解 AWK 程序,我們下面概述其基本知識。
模式( pattern ) 用于匹配輸入中的每行文本。對于匹配上的每行文本,awk 都執(zhí)行對應的 動作( action )。模式和動作之間使用花括號隔開。awk 順序掃描每一行文本,并使用 記錄分隔符(一般是換行符)將讀到的每一行作為 記錄,使用 域分隔符( 一般是空格符或制表符 ) 將一行文本分割為多個 域, 每個域分別可以使用 2, … 表示。1 表示第一個域,表示第二個域,n 表示第 n 個域。 $0 表示整個記錄。模式或動作都可以不指定,缺省模式的情況下,將匹配所有行。缺省動作的情況下,將執(zhí)行動作 {print},即打印整個記錄。
此處使用Nginx access.log 舉例,Tomcat 日志自己舉一反三。 使用 awk 分解出Nginx access日志中的信息
以此類推…… 當我們使用默認的域分割符時,我們可以從日志中解析出下面不同類型的信息:
我們不難發(fā)現(xiàn),僅使用默認的域分隔符,不方便解析出請求行、引用頁和瀏覽器類型等其他信息,因為這些信息之中包含不確定個數(shù)的空格。 因此,我們需要把域分隔符修改為 “ ,就能夠輕松讀出這些信息。
注意:這里為了避免 Linux Shell 誤解 “ 為字符串開始,我們使用了反斜杠,轉(zhuǎn)義了 “ 。 現(xiàn)在,我們已經(jīng)掌握了 awk 的基本知識,以及它是怎樣解析日志的。
此處使用Nginx access.log 舉例,Tomcat 日志自己舉一反三。
如果我們想知道那些類型的瀏覽器訪問過網(wǎng)站,并按出現(xiàn)的次數(shù)倒序排列,我可以使用下面的命令:
此命令行首先解析出瀏覽器域,然后使用管道將輸出作為第一個 sort 命令的輸入。第一個 sort 命令主要是為了方便 uniq 命令統(tǒng)計出不同瀏覽器出現(xiàn)的次數(shù)。最后一個 sort 命令將把之前的統(tǒng)計結(jié)果倒序排列并輸出。
我們可以使用下面的命令行,統(tǒng)計服務器返回的狀態(tài)碼,發(fā)現(xiàn)系統(tǒng)可能存在的問題。
正常情況下,狀態(tài)碼 200 或 30x 應該是出現(xiàn)次數(shù)最多的。40x 一般表示客戶端訪問問題。50x 一般表示服務器端問題。 下面是一些常見的狀態(tài)碼:
HTTP 協(xié)議狀態(tài)碼定義可以參閱:
查找并顯示所有狀態(tài)碼為 404 的請求
統(tǒng)計所有狀態(tài)碼為 404 的請求
現(xiàn)在我們假設某個請求 ( 例如 : URI: /path/to/notfound ) 產(chǎn)生了大量的 404 錯誤,我們可以通過下面的命令找到這個請求是來自于哪一個引用頁,和來自于什么瀏覽器。
有時候會發(fā)現(xiàn)其他網(wǎng)站出于某種原因,在他們的網(wǎng)站上使用保存在自己網(wǎng)站上的圖片。如果您想知道究竟是誰未經(jīng)授權(quán)使用自己網(wǎng)站上的圖片,我們可以使用下面的命令:
注意:使用前,將 修改為自己網(wǎng)站的域名。
統(tǒng)計共有多少個不同的 IP 訪問:
統(tǒng)計每一個 IP 訪問了多少個頁面:
將每個 IP 訪問的頁面數(shù)進行從小到大排序:
統(tǒng)計 2018 年 8 月 31 日 14 時內(nèi)有多少 IP 訪問 :
統(tǒng)計訪問最多的前十個 IP 地址
查看某一個 IP訪問了哪些頁面:
統(tǒng)計某個 IP 的詳細訪問情況,按訪問頻率排序
列出傳輸大小最大的幾個文件
列出輸出大于 204800 byte ( 200kb) 的頁面以及對應頁面發(fā)生次數(shù)
列出訪問最頻的頁面(TOP100)
列出訪問最頻的頁面([排除php頁面】(TOP100)
列出頁面訪問次數(shù)超過100次的頁面
列出最近1000條記錄,訪問量最高的頁面
統(tǒng)計每分鐘的請求數(shù),top100的時間點(精確到分鐘)
統(tǒng)計每小時的請求數(shù),top100的時間點(精確到小時)
統(tǒng)計每秒的請求數(shù),top100的時間點(精確到秒)
統(tǒng)計當天的 pv
說明:
可以使用下面的命令統(tǒng)計出所有響應時間超過 3 秒的日志記錄。
注意:NF 是當前記錄中域的個數(shù)。$NF 即最后一個域。
列出php頁面請求時間超過3秒的頁面,并統(tǒng)計其出現(xiàn)的次數(shù),顯示前100條
列出相應時間超過 5 秒的請求,顯示前20條
統(tǒng)計蜘蛛抓取次數(shù)
統(tǒng)計蜘蛛抓取404的次數(shù)
通過本文的介紹,我相信同學們一定會發(fā)現(xiàn) linux三劍客強大之處。在命令行中,它還能夠接受,和執(zhí)行外部的 AWK 程序文件,可以對文本信息進行非常復雜的處理,可以說“只有想不到的,沒有它做不到的”。
Linux運維人員必會的120個命令
來自《跟老男孩學Linux運維:核心系統(tǒng)命令實戰(zhàn)》一書
前言
第1章 Linux命令行簡介 / 1
1.1Linux命令行概述 / 1
1.2在Linux命令行下查看命令幫助 / 4
1.3Linux shutdown reboot halt / 9
關機:
shutdown -h now
halt
init 0
第2章 文件和目錄操作命令 / 13
2.1pwd:顯示當前所在的位置 / 13
2.2cd:切換目錄 / 16
2.3tree:以樹形結(jié)構(gòu)顯示目錄下的內(nèi)容 / 18
2.4mkdir:創(chuàng)建目錄 / 22
2.5touch:創(chuàng)建空文件或改變文件的時間戳屬性 / 27
2.6ls:顯示目錄下的內(nèi)容及相關屬性信息 / 30
2.7cp:復制文件或目錄 / 39
2.8mv:移動或重命名文件 / 42
2.9rm:刪除文件或目錄 / 45
2.10rmdir:刪除空目錄 / 48
2.11ln:硬鏈接與軟鏈接 / 49
2.12readlink:查看符號鏈接文件的內(nèi)容 / 54
2.13find:查找目錄下的文件 / 55
2.14xargs:將標準輸入轉(zhuǎn)換成命令行參數(shù) / 68
2.15rename:重命名文件 / 71
2.16basename:顯示文件名或目錄名 / 72
2.17dirname:顯示文件或目錄路徑 / 72
2.18chattr:改變文件的擴展屬性 / 73
2.19lsattr:查看文件擴展屬性 / 75
2.20file:顯示文件的類型 / 76
2.21md5sum:計算和校驗文件的MD5值 / 77
2.22chown:改變文件或目錄的用戶和用戶組 / 80
2.23chmod:改變文件或目錄權(quán)限 / 81
2.24chgrp:更改文件用戶組 / 85
2.25umask:顯示或設置權(quán)限掩碼 / 86
2.26老男孩從新手成為技術大牛的心法 / 90
第3章 文件過濾及內(nèi)容編輯處理命令 / 91
3.1cat:合并文件或查看文件內(nèi)容 / 91
3.2tac:反向顯示文件內(nèi)容 / 103
3.3more:分頁顯示文件內(nèi)容 / 104
3.4less:分頁顯示文件內(nèi)容 / 107
3.5head:顯示文件內(nèi)容頭部 / 109
3.6tail:顯示文件內(nèi)容尾部 / 111
3.7tailf:跟蹤日志文件 / 114
3.8cut:從文本中提取一段文字并輸出 / 115
3.9split:分割文件 / 117
3.10paste:合并文件 / 118
3.11sort:文本排序 / 123
3.12join:按兩個文件的相同字段合并 / 127
3.13uniq:去除重復行 / 129
3.14wc:統(tǒng)計文件的行數(shù)、單詞數(shù)或字節(jié)數(shù) / 131
3.15iconv:轉(zhuǎn)換文件的編碼格式 / 133
3.16dos2unix:將DOS格式文件轉(zhuǎn)換成UNIX格式 / 134
3.17diff:比較兩個文件的不同 / 135
3.18vimdiff:可視化比較工具 / 138
3.19rev:反向輸出文件內(nèi)容 / 139
3.20tr:替換或刪除字符 / 140
3.21od:按不同進制顯示文件 / 143
3.22tee:多重定向 / 145
3.23vi/vim:純文本編輯器 / 147
3.24老男孩逆襲思想:做Linux運維的多個好處 / 152
第4章 文本處理三劍客 / 153
4.1grep:文本過濾工具 / 153
4.2sed:字符流編輯器 / 159
4.3awk基礎入門 / 165
第5章 Linux信息顯示與搜索文件命令 / 176
5.1uname:顯示系統(tǒng)信息 / 176
5.2hostname:顯示或設置系統(tǒng)的主機名 / 178
5.3dmesg:系統(tǒng)啟動異常診斷 / 179
5.4stat:顯示文件或文件系統(tǒng)狀態(tài) / 181
5.5du:統(tǒng)計磁盤空間使用情況 / 183
5.6date:顯示與設置系統(tǒng)時間 / 186
5.7echo:顯示一行文本 / 190
5.8watch:監(jiān)視命令執(zhí)行情況 / 193
5.9which:顯示命令的全路徑 / 195
5.10whereis:顯示命令及其相關文件全路徑 / 196
5.11locate:快速定位文件路徑 / 197
5.12updatedb:更新mlocate數(shù)據(jù)庫 / 199
5.13老男孩逆襲思想:新手在工作中如何問問題不會被鄙視 / 200
第6章 文件備份與壓縮命令 / 201
6.1tar:打包備份 / 201
6.2gzip:壓縮或解壓文件 / 208
6.3zip:打包和壓縮文件 / 211
6.4unzip:解壓zip文件 / 212
6.5scp:遠程文件復制 / 214
6.6rsync:文件同步工具 / 216
6.7老男孩逆襲思想:新手如何高效地提問 / 220
第7章 Linux用戶管理及用戶信息查詢命令 / 222
7.1 useradd:創(chuàng)建用戶 / 222
7.2usermod:修改用戶信息 / 227
7.3userdel:刪除用戶 / 229
7.4groupadd:創(chuàng)建新的用戶組 / 230
7.5groupdel:刪除用戶組 / 231
7.6passwd:修改用戶密碼 / 232
7.7chage:修改用戶密碼有效期 / 237
7.8chpasswd:批量更新用戶密碼 / 238
7.9su:切換用戶 / 240
7.10visudo:編輯sudoers文件 / 242
7.11sudo:以另一個用戶身份執(zhí)行命令 / 244
7.12id:顯示用戶與用戶組的信息 / 248
7.13w:顯示已登錄用戶信息 / 249
7.14who:顯示已登錄用戶信息 / 250
7.15users:顯示已登錄用戶 / 252
7.16whoami:顯示當前登錄的用戶名 / 253
7.17last:顯示用戶登錄列表 / 253
7.18lastb:顯示用戶登錄失敗的記錄 / 254
7.19lastlog:顯示所有用戶的最近登錄記錄 / 255
第8章 Linux磁盤與文件系統(tǒng)管理命令 / 257
8.1fdisk:磁盤分區(qū)工具 / 257
8.2partprobe:更新內(nèi)核的硬盤分區(qū)表信息 / 265
8.3tune2fs:調(diào)整ext2/ext3/ext4文件系統(tǒng)參數(shù) / 266
8.4parted:磁盤分區(qū)工具 / 268
8.5mkfs:創(chuàng)建Linux文件系統(tǒng) / 272
8.6dumpe2fs:導出ext2/ext3/ext4文件系統(tǒng)信息 / 274
8.7resize2fs:調(diào)整ext2/ext3/ext4文件系統(tǒng)大小 / 275
8.8fsck:檢查并修復Linux文件系統(tǒng) / 278
8.9dd:轉(zhuǎn)換或復制文件 / 281
8.10mount:掛載文件系統(tǒng) / 284
8.11umount:卸載文件系統(tǒng) / 288
8.12df:報告文件系統(tǒng)磁盤空間的使用情況 / 289
8.13mkswap:創(chuàng)建交換分區(qū) / 293
8.14swapon:激活交換分區(qū) / 294
8.15swapoff:關閉交換分區(qū) / 295
8.16sync:刷新文件系統(tǒng)緩沖區(qū) / 296
第9章 Linux進程管理命令 / 298
9.1ps:查看進程 / 298
9.2pstree:顯示進程狀態(tài)樹 / 305
9.3pgrep:查找匹配條件的進程 / 306
9.4kill:終止進程 / 307
9.5killall:通過進程名終止進程 / 310
9.6pkill:通過進程名終止進程 / 311
9.7top:實時顯示系統(tǒng)中各個進程的資源占用狀況 / 313
9.8nice:調(diào)整程序運行時的優(yōu)先級 / 320
9.9renice:調(diào)整運行中的進程的優(yōu)先級 / 323
9.10nohup:用戶退出系統(tǒng)進程繼續(xù)工作 / 324
9.11strace:跟蹤進程的系統(tǒng)調(diào)用 / 325
9.12ltrace:跟蹤進程調(diào)用庫函數(shù) / 332
9.13runlevel:輸出當前運行級別 / 334
9.14init:初始化Linux進程 / 335
9.15service:管理系統(tǒng)服務 / 335
第10章 Linux網(wǎng)絡管理命令 / 338
10.1ifconfig:配置或顯示網(wǎng)絡接口信息 / 338
10.2ifup:激活網(wǎng)絡接口 / 343
ifup eth0
10.3ifdown:禁用網(wǎng)絡接口 / 343
ifdown eth0
service network restart(/etc/init.d/network restart) 激活整個網(wǎng)絡,所有網(wǎng)卡。
10.4route:顯示或管理路由表 / 344
10.5arp:管理系統(tǒng)的arp緩存 / 350
10.6ip:網(wǎng)絡配置工具 / 351
10.7netstat:查看網(wǎng)絡狀態(tài) / 358
10.8ss:查看網(wǎng)絡狀態(tài) / 362
10.9ping:測試主機之間網(wǎng)絡的連通性 / 363
10.10traceroute:追蹤數(shù)據(jù)傳輸路由狀況 / 366
10.11arping:發(fā)送arp請求 / 367
10.12telnet:遠程登錄主機 / 369
10.13nc:多功能網(wǎng)絡工具 / 370
10.14ssh:安全地遠程登錄主機 / 373
10.15wget:命令行下載工具 / 376
10.16mailq:顯示郵件傳輸隊列 / 379
10.17mail:發(fā)送和接收郵件 / 381
10.18nslookup:域名查詢工具 / 386
10.19dig:域名查詢工具 / 389
10.20host:域名查詢工具 / 393
10.21nmap:網(wǎng)絡探測工具和安全/端口掃描器 / 394
10.22tcpdump:監(jiān)聽網(wǎng)絡流量 / 398
第11章 Linux系統(tǒng)管理命令 / 407
11.1lsof:查看進程打開的文件 / 407
11.2uptime:顯示系統(tǒng)的運行時間及負載 / 411
11.3free:查看系統(tǒng)內(nèi)存信息 / 411
11.4iftop:動態(tài)顯示網(wǎng)絡接口流量信息 / 413
11.5vmstat:虛擬內(nèi)存統(tǒng)計 / 415
11.6mpstat:CPU信息統(tǒng)計 / 419
11.7iostat:I/O信息統(tǒng)計 / 420
11.8iotop:動態(tài)顯示磁盤I/O統(tǒng)計信息 / 423
11.9sar:收集系統(tǒng)信息 / 425
11.10chkconfig:管理開機服務 / 430
11.11ntsysv:管理開機服務 / 433
11.12 setup:系統(tǒng)管理工具 / 434
11.13ethtool:查詢網(wǎng)卡參數(shù) / 436
11.14mii-tool:管理網(wǎng)絡接口的狀態(tài) / 437
11.19rpm:RPM包管理器 / 443
11.20yum:自動化RPM包管理工具 / 446
top命令
第12章 Linux系統(tǒng)常用內(nèi)置命令 / 450
12.1Linux內(nèi)置命令概述 / 450
12.2Linux內(nèi)置命令簡介 / 450
12.3Linux常用內(nèi)置命令實例 / 452
一、行數(shù)統(tǒng)計方法
1、系統(tǒng)命令:wc -l filename
2、grep方法:grep -c "" filename
3、sed方法:sed -n '$=' filename
4、awk方法:awk 'END{print NR}' filename
參考文件
cat file.csv | awk -F '\t' '{print $2}'
'\t'指的是file.csv不同列以'\t'分割,如果的是以其他符號分割,換成其她符號;
'{print $2}'是指取第2列,此處從1開始計數(shù),第1列,第2列;
一般去重之前要進行排序
cat file.csv | awk -F '\t' '{print $2}'?| sort | uniq
前半部分與命令1一樣,后面加上| sort | uniq
比如通過命令2發(fā)現(xiàn),第2列取值有兩種,分別是'neg'和‘pos’,那么我想知道有多少行的第2列取值為'pos',多少行的第2列取值為'neg'。
cat file.csv | awk -F '\t' '{print $2}'?|?grep -o 'neg'| wc -l
前半部分與命令1一樣,后面加上?|?grep -o 'neg'| wc -l
grep -o 'neg'就是取出取值為'neg'的行
wc -l 是計數(shù)有多少行