awk實戰小例子

2021-07-08 16:25:52 字數 947 閱讀 3273

1、去除重複行,並計數

文字內容:

jdasalsfkklasjf,

20euweiu37123812

djsakkldkaljdladsfsfsfsfsf

20euweiu37123812

20euweiu37123812

20euweiu37123812

fssfsfsfsfsfsfs

ererwewetwet

sfsfsfsfsfsfsfs

sfsfsfsfsfsfsfs

sfsfsfsfsfsfsdf

sfsfsfsfsfsfsfssfsfsfsfsfsfsfssfsfsfsfsfsfsfs

sfsfsfsfsfsfsfs

sfsfsfsfsfsfsfs

思路:以每一行的$0為key,建立乙個hash陣列,如果陣列已有,則不print

在《awk程式指令模型》中介紹了awk的程式指令由模式和操作組成,即pattern 的形式,如果省略action,則預設執行 print $0 的操作。

實現去除重複功能的就是這裡的pattern:

!a[$0]++

在awk中,對於未初始化的陣列變數,在進行數值運算的時候,會賦予初值0,因此a[$0]=0,++運算子的特性是先取值,後加1,因此pattern等價於

!0

而0為假,!為取反,因此整個pattern最後的結果為1,相當於if(1),pattern匹配成功,輸出當前記錄,對於dup檔案,前3條記錄的處理方式都是如此。

當讀取第4行資料「hello world」的時候,a[$0]=1,取反後的結果為0,即pattern為0,pattern匹配失敗,因此不輸出這條記錄,後續的資料以此類推,最終成功實現去除檔案中的重複行

awk小例子 2 數值統計指令碼

通訊公司工作,經常處理各種協議介面,在統計協議介面字段內容時,需要統計字段填寫的內容是否正確,和佔比是多少。要是單次統計,估計會把人累死,寫個指令碼統計,輕鬆便捷。舉例 介面內容 這是一條話單,這樣的話單有很多條 24 eb8f7837000039 8613522222222 2016092817 ...

awk 例子分析

awk 用法 awk 變數名含義 argc命令列變元個數 argv命令列變元陣列 filename當前輸入檔名 fnr當前檔案中的記錄號 fs輸入域分隔符,預設為乙個空格 rs輸入記錄分隔符 nf當前記錄裡域個數 nr到目前為止記錄數 ofs輸出域分隔符 ors輸出記錄分隔符 例子1 echo ip...

awk學習 例子篇

chinaunix awk例子參考 精確匹配 awk 3 48 grade.txt awk 0 brown grade.txt awk 4 brown 2 grade.txt awk grade.txt 設定大小寫 可使用 符號 awk gg reen grade.txt 任意字元 awk 1 a ...