溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

AWK——的使用

發(fā)布時間:2020-07-21 22:02:19 來源:網(wǎng)絡(luò) 閱讀:302 作者:拉考的考拉 欄目:開發(fā)技術(shù)

   Awk的使用

1     awk的基礎(chǔ)知識

   awk是文本與數(shù)據(jù)的處理工具

   awk的特點是可以編程,并且處理靈活,功能更強大

   awk的應(yīng)用:統(tǒng)計和制表等等

2     awk的處理方式和格式

   awk一次處理一行內(nèi)容

   awk對每行可以切片處理

3   awk的格式有

   命令行格式

   腳本格式

4   命令行格式有

   基本格式

   擴展格式

5   基本格式

   awk

   參數(shù)

   命令

  操作的文件 

6   命令由兩部分組成

   正則表達式或邏輯判斷式

   awk操作命令

7   awk操作命令語句

   內(nèi)置函數(shù)

   控制指令

8  awk的內(nèi)置參數(shù)

   內(nèi)置參數(shù)的使用格式(awk  -F  ’:指定的分割符’  ’{print 內(nèi)置參數(shù)}’  文件名)awk的內(nèi)置變量1: $0表示整個當(dāng)前行 $1每行第一個字段 $2每行第二個字段,awk內(nèi)置參數(shù)的分割符  參數(shù):-F  ’指定的分割符’  如果沒有寫將默認為空格,如果想要多個字段加逗號

9    awk的內(nèi)置變量2

    NR每行的行號  NF字段數(shù)量的總數(shù)或每行的列數(shù)  FILENAME正在處理的文件名

   案例一: 顯示文件中的每行的行號,每行的列數(shù)和對應(yīng)行的用戶名

   第一種  用print   awk -F  ’:’  ’{print ”Line行號: ”NR, ”Col列數(shù):”NF”,”User用戶名: ”$1}’  文件名

   第二種  用printf  awk -F  ’:’  ’{printf (”Line:%s  Col:%s  User:%s\n”,NR,

NF,$1)}’ 文件名  s前面加上字符數(shù),顯示的時候格式會更整齊)

   案例二: 顯示文件中用戶ID大于100的行號和用戶名

awk -F  ’:’  ’{if條件判斷  ($3>100)  pint  ”Line:”NR, ”User: ”$1}’  文件名

   案例三: 在服務(wù)器log中找出Error的發(fā)生日期

   第一種: sed  ’/Error/p’ fresh.log  |  awk  ’{print  $1}’sed找出有Error的行

    第二種: awk  ’/Error/{print  $1}’ fresh.log  用awk定位Error

10   邏輯判斷式

   ~,!~匹配正則表達式      匹配   不匹配

   awk   -F  ’:’  ’要打印的東西如$1邏輯判斷式如~/匹配的條件如^m.*/{print  $1}’ 文件名        打印出文件中所有以m開頭的第一個字段

   = =,!=< ,>判斷邏輯表達式      等于   不等于     小于     大于

   awk -F  ’:’   ’輸出的條件如$3>100  {print  $!,$3}’  文件名

   打印出文件中所有小于100的第一個字段和第三個字段

11      擴展格式

   在基本格式之前加入BEGIN,在基本格式之后加入END        

   案例一:  制表顯示/etc/passwd每行的行號,每行的列數(shù),對應(yīng)行的用戶名

awk  -F  ’:’ 開頭部分’BEIND{print  “LINE行號  COL列數(shù) USER用戶名}’

   循環(huán)部分要打印的字段{print  NR每行的行號,NE每行的列數(shù),$1每行的第一個字段}結(jié)尾部分END{print”------”FITENAME”------”}’   文件名

12    awk的邏輯處理案例

   案例一: 統(tǒng)計當(dāng)前文件夾下的文件和文件夾占用的大小

ls  -l  |  awk  ’BEGIN (size=0)}{size+=$5}END{print  “ size is ” size/1024/1024”M” }’

   案例二: 統(tǒng)計顯示/etc/passwd/的賬戶總?cè)藬?shù)

awk -F  ’:’  ‘BEGIN{count=0}$1!~/^$/{count++}END{print “count= ”count}’ 文件名

   統(tǒng)計顯示UID大于100的用戶名

Awk  -F  ‘:’  ‘BEGIN{count=0}{if  ($3 > 100) name[count++]=$1}END{for

(i=0;i<count;i++) print i,name[i]}’  passwd

   案例三: 統(tǒng)計netstat-anp狀態(tài)下為LISTENCONNECTED的連接數(shù)量

Netstat  -anp |  awk  ‘$6~/CONNECTED|LISTEN/{sum[$6]++}END{for  (i  in  sum)print  i,sum[i]}’

13    sed和awk的區(qū)別

   sed側(cè)重于正則處理

   sedawk可以共同使用

   awksed都可以處理文本

   awk側(cè)重于復(fù)雜的邏輯處理

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI