awk學習筆錄(一)

2021-07-04 16:44:38 字數 1568 閱讀 2344

awk是一門指令碼處理語言,對於處理格式化的文字而言非常方便。下面結合自己實際過程中的使用體會做一些總結。

awk指令碼由3部分組成,begin{}、/模式/{}和end{}。begin{}用來進行一些預設定,比如初始化變數,end{}用來做一些善後處理,所以兩者對於乙個文字檔案來說只執行一次,而中間的/模式/{}部分以行為單位,文字檔案的每一行都會執行一次。

通常,根據使用目的,如果指令碼執行沒有輸入檔案,只需要有begin{}或(和)end{}即可;如果不需要預處理或(和)善後處理,則只需要/模式/{}部分即可。

需要額外注意的是,當指令碼連續處理多個文字檔案時,begin{}和end{}對每個輸入文字檔案都會執行一次。

awk指令碼既可以寫到檔案中,也可以直接在終端書寫並執行。對於較短的指令碼,可以選擇在終端輸入執行。為了便於反覆執行的便利和效率,一般將指令碼內容寫入檔案。

對於終端輸入執行,其書寫格式為:awk 『指令碼內容』 文字檔案名(可以多個文字檔案,空格分隔)

對於執行指令碼檔案,其書寫格式為:awk -f 指令碼檔名 文字檔案名(可以多個文字檔案,空格分隔)

預設分隔符是佔位符,包括空格和tab。如果需要更改預設分隔符,以逗號為例,格式如下:

awk -f 「,」file (逗號用單、雙引號括起都是可以的)

awk 『begin』 file(逗號只能用雙引號括起)

如果想設定乙個以上分隔符,格式類似如下:

awk -f 「[,:]」 file

awk 『begin』 file

通常awk的語法格式和c語言是非常類似的,因此,對於不熟悉的語法完全可以往c語言上靠。不過,一些差異還是有的。

awk語句末尾可以沒有分號,直接換行。如果多個語句在同一行,需要加分號。

環境變數是內建變數,直接使用。常用的一些變數如下:

fs 字段分隔符

ofs 輸出字段分隔符

rs 記錄分隔符(預設是乙個回車)

ors 輸出記錄分隔符(預設是乙個回車)

nf 當前記錄中的字段數

nr 當前記錄數。從1開始。

filaname 當前輸入文字檔案名

subsep 陣列下標分隔符(預設是』\034』)

ignorecase 設為1表示忽略大小寫

awk沒有型別的概念,也不需要定義,直接使用。但最好的方法是,乙個變數只存一種型別,以免混亂。

數值型變數不需要初始化,缺省會從0開始加。

if else, while, for用法同c語言

break, continue用法同c語言

next 從輸入檔案中讀取一行,然後從頭開始執行awk指令碼

exit 結束awk程式,但不會略過end塊。退出狀態為0代表成功,非零值表示出錯。

awk的陣列為關聯陣列。只有一維陣列,不支援二維陣列,但可以模擬二維陣列。

自定義函式的格式如下:

function

name

(parameter1,parameter2, ...)

awk裡的函式沒有返回型別,形參也沒有型別。函式可以定義在begin{}前,也可以定義在end{}後。

Python學習筆錄

參考 1.type和isinstance區別 type a a,type 不會認為子類是一種父類型別。isinstance a a isinstance 會認為子類是一種父類型別。2.標準資料型別 python3 中有六個標準的資料型別 number 數字 string 字串 list 列表 tup...

git 學習筆錄

說到git命令,首先我們要理解git 的執行原理,簡單的分為4個部分,分別是workspace工作區,stage快取區,resposity 本地倉庫以及remote遠端倉庫 從根本來說,git就是一套內容定址檔案系統,我們學會一些簡單的命令列操作即可,目的就是將我們本地倉庫 提交至遠端倉庫,中間的快...

Linux學習筆錄

cal y 2019 test.txt 儲存螢幕的內容 ps 當前終端下的程序 ps aux所有程序 1 觀察磁碟活動情況 磁碟活動情況主要從以下幾個指標了解 bi 表示從磁碟每秒讀取的塊數 blocks s 數字越大,表示讀磁碟的活動越多。bo 表示每秒寫到磁碟的塊數 blocks s 數字越大,...