文字編輯神器 awk

2021-09-08 23:16:47 字數 1382 閱讀 1128

一、shell下面直接處理awk命令

awk '' file       

awk '/^(11+?)\1+$/ ' file    //著名的判斷是否為素數的正則

上面兩個命令都是直接可以在shell下執行的命令,基本模式是 awk pattern file,就是說awk會一行一行的從file中讀取文字,然後判斷pattern是否滿足,如果滿足則執行action。

二、awk指令碼的基本結構

begin{}   //awk的前奏,一般會在這裡初始化變數、讀取命令引數、設定分隔符

{}     //awk的主體部分,這裡主要是一行一行的從文字檔案中讀取資料,執行命令

end{}     //這是awk的收尾部分,這時awk已經從文字檔案中讀取完所有資料,這時可以執行一些對結果的統計啊之類的工作

awk主體部分的執行流程:

1.從文字檔案中讀取一行資料

2.更新awk內建變數,如$0,nr,nf等

3.依次執行主體部分的命令

4.若文字檔案中還有未讀取完的資料,繼續迴圈1-4的流程

在shell中執行awk指令碼的命令是: awk -f test.awk -v arg1=9 -v arg2=8 ... file

-f 指定指令碼檔案,每乙個-v指定乙個命令引數

三、awk的基本命令

i/o命令: print 這個是列印後換行     printf  這個列印後不換行   getline 從檔案中讀取一行資料

如awk '' file  列印file檔案的第一列

awk '' file 將file檔案的第二列列印為一行

getline 的命令格式為:

getline varable <  file 這樣file的一行資料儲存入變數varable中

如果是getline < file 省略varable,則資料儲存到$0中

流程控制命令: if(...){} else{}, for(...){}, while(...){} 這個跟c差不多

四、awk的內建變數

argc  命令引數的個數

ar**  儲存命令引數的陣列

fnr 已經讀入的記錄數

fs 分割為記錄的分隔符

ofs  輸出時的分隔符

nf 當前行的記錄數

nr 已經讀入的行數

$0 記錄當前讀入的行,$1 $2 $3 ... 記錄分隔後的字段

五、awk指令碼呼叫shell命令

awk 'begin' file

六、awk應用

awk 'nr%2==1 ' file

linux文字編輯器awk

在以linux為核心的作業系統環境中,文字編輯器具有重要地位,其中關鍵原因在於涉及linux作業系統的配置均是以檔案形式存在,因而維護linux的正常執行特別是自定義環境配置時,必須用到文字編輯器修改配置檔案的內容。作為編輯檔案的主流編輯器,vim一直在linux系統中被奉為神器,誠然,vim編輯器...

shell文字編輯器 awk用法

awk 命令 執行語句 檔名 awk 命令 正則 檔名 f 指定分隔符。不寫就是以乙個或多個空格為分隔符。v var value 賦值乙個使用者定義變數,將外部變數傳遞給awkbegin語句塊 在awk開始從輸入流中讀取行之前被執行,這是乙個可選的語句塊,比如變數初始化 列印輸出 的表頭等語句通常可...

文字編輯框 調整文字編輯區域

在多行模式下的cedit類提供void cedit setrectnp lpcrect lprect 函式,此函式用來調整文字編輯的區域,用這個函式可以設定上下左右margins,而void setmargins uint nleft,uint nright 函式只能設定左右margins。crec...