awk從放棄到入門(1) awk基礎

2022-08-29 19:21:12 字數 2603 閱讀 9598

一、awk簡介

awk其名稱得自于它的創始人 alfred aho 、peter weinberger 和 brian kernighan 姓氏的首個字母。實際上 awk 的確擁有自己的語言: awk 程式語言 , 三位建立者已將它正式定義為「樣式掃瞄和處理語言」。它允許您建立簡短的程式,這些程式讀取輸入檔案、為資料排序、處理資料、對輸入執行計算以及生成報表,還有無數其他的功能。

awk 是一種很棒的語言,它適合文字處理和報表生成,其語法較為常見,借鑑了某些語言的一些精華,如 c 語言等。在 linux 系統日常處理工作中,發揮很重要的作用,掌握了 awk將會使你的工作變的高大上。 awk 是三劍客的老大,利劍出鞘,必會不同凡響。

linux三劍客:

(1)grep:適合單純的查詢和匹配文字。

(2)sed:適合編輯匹配到的文字。

(3)awk:適合格式化文字,對文字進行較複雜的格式處理。

二、awk基礎:action

《語法》

awk [options] 'program' file1 , file2 , ```

awk [options] 'pattern' file

2.1通過action了解awk:

《例子1>awk最常用的就是print和printf功能,例子中使用awk列印功能,將test_awk.txt檔案中的內容列印出來。

《例子2>實際場景來使用awk功能。上圖中的awk '',表示輸出df的資訊的第1列,$1表示將當前行按照分隔符分割後的第1列,不指定分隔符時,預設使用空格作為分隔符,細心的你一定發現了,上述資訊用的空格不止有乙個,而是有連續多個空格,awk自動將連續的空格理解為乙個分割符了。

$0 表示顯示整行 ,$nf表示當前行分割後的最後一列($0和$nf均為內建變數)注意,$nf 和 nf 要表達的意思是不一樣的,對於awk來說,$nf表示最後乙個字段,nf表示當前行被分隔符切開以後,一共有幾個字段。也就是說,假如一行文字被空格分成了7段,那麼nf的值就是7,$nf的值就是$7,  而$7表示當前行的第7個字段,也就是最後一列,那麼每行的倒數第二列可以寫為$(nf-1)。

《例子2-1>awk '' test_awk.txt  #列印test_awk.txt檔案中第1列和第2列的內容。

《例子2-2>awk '' test_awk.txt  #表示將文字中最後一列列印出來

<例子2-3>awk '' test_awk.txt  #表示將文字中倒數第二列的內容列印出來

《例子2-4>awk '' test_awk.txt=awk '' test_awk.txt  #表示將文字中的所有內容列印出來

《例子3>可以自己新增字段,並與檔案中的內容拼接

三、awk基礎:pattern

awk 包含兩種特殊的模式:begin 和 end。

(1)begin模式:指定了處理文字之前需要執行的操作

(2)end模式:指定了處理完所有行之後所需要執行的操作

3.1begin 模式案例

awk 'begin ' test_awk.txt  #表示在執行列印第1列和第2列的動作前先執行begin中的列印動作

3.2end模式案例

awk ' end' test_awk.txt  #表示在執行列印第1列和第2列的動作後再執行end中的列印動作

awk 從入門到精通

1 簡介 主要用來處理文字資料,處理效率高於shell,簡潔高效,絕對不會遇到記憶體溢位 2 命令處理模式 按行處理,一行一行執行 和shell一樣 3 命令格式 awk f f v begin end file f指定分隔符 f呼叫指令碼 v定義變數 var value 引用 塊 單引號 begi...

C 從入門到放棄(1)

c 從入門到放棄 1 以字母或下劃線開始,由字母 數字 下劃線組成 大小寫有區別 不能與關鍵字 裝置字衝突 系統預留字元 單目運算子 雙目運算子 三目運算子 空格符 用來做單詞之間的分隔,可解決特殊場景下的操作時序 逗號 變數之間 函式的多個引數之間分隔符 分號 僅用作for語句後的分隔符 冒號 s...

javaScript從入門到放棄例程1

1.的提交事件onsubmit 註冊頁面表單校驗核心 function check var myreg 1 3,4,5,7,8 0 9 用雙引號則不能使用 var code 1 document.getelementbyid logsinname value if myreg.test code 1...