Linux awk命令基礎

2021-10-14 04:26:50 字數 1948 閱讀 9674

語法格式:

awk [ 選項 ] [命令] [檔案]

選項引數

-f fs or --field-separator fs

指定輸入檔案折分隔符,fs是乙個字串或者是乙個正規表示式,如-f:

-v var=value or --asign var=value

賦值乙個使用者定義變數

-f scripfile or --file scriptfile

從指令碼檔案中讀取awk命令

-mf nnn and -mr nnn

對nnn值設定內在限制,-mf選項限制分配給nnn的最大塊數目;-mr選項限制記錄的最大數目。這兩個功能是bell實驗室版awk的擴充套件功能,在標準awk中不適用

-w compact or --compat, -w traditional or --traditional

在相容模式下執行awk。所以gawk的行為和標準的awk完全一樣,所有的awk擴充套件都被忽略

-w help or --help, -w usage or --usage

列印全部awk選項和每個選項的簡短說明

-w lint or --lint

列印不能向傳統unix平台移植的結構的警告

-w lint-old or --lint-old

列印關於不能向傳統unix平台移植的結構的警告

-w posix

開啟相容模式。但有以下限制,不識別:/x、函式關鍵字、func、換碼序列以及當fs是乙個空格時,將新行作為乙個域分隔符;操作符=不能代替和=;fflush無效

-w re-interval or --re-inerval

允許間隔正規表示式的使用,參考(grep中的posix字元類),如括號表示式[[:alpha:]]

-w source program-text or --source program-text

使用program-text作為源**,可與-f命令混用

-w version or --version

列印bug報告資訊的版本

運算子

內建變數

awk的工作流程

1.讀輸入檔案之前執行的**段(由begin關鍵字標識)。

2.主迴圈執行輸入檔案的**段。

3.讀輸入檔案之後的**段(由end關鍵字標識)

1.通過關鍵字 begin 執行 begin 塊的內容,即 begin 後花括號 {} 的內容。如果begin塊存在,awk執行它指定的actions。

2.完成 begin 塊的執行,開始執行body塊。awk從輸入檔案中讀取一行,稱為一條輸入記錄。(如果輸入檔案省略,將從標準輸入讀取),awk將讀入的記錄分割成多個字段,將第1個字段放入變數$1中,第2個字段放入$2,以此類推。

$0表示整條記錄所有域(一整行內容)。$1 表示第乙個域,n 表示第 n 個域。

3.依次執行各 body 塊,pattern 部分匹配該行內容成功後,才會執行 awk-commands 的內容,把當前輸入記錄與awk中』匹配規則'中的「匹配規則」比較,看是否匹配,如果相匹配,就執行對應的『執行命令』。如果不匹配,就跳過對應的執行命令。

4.awk讀取輸入的下一行,繼續重複步驟2和3,迴圈讀取直到檔案結束完成body塊執行。

5.當awk讀完所有的輸入行後,開始執行end塊,輸出最終結果。

Linux awk命令詳解

3.awk的執行過程 1 awk script的組成 awk script可以由一條或多條awk cmd組成,兩條awk cmd之間一般以newline分隔 awk cmd由兩部分組成 awk pattern awk script可以被分成多行書寫,必須確保整個awk script被單引號括起來。2...

linux awk命令學習

awk是一種功能很強大的程式語言,用於linux系統下文字和資料的處理。本篇文章只學習一些awk相關的常規應用,而不對awk的語法進行討論,如果有需要,直接查資料就好了。1.檢視特定程序的pid,sh ps pid tty time cmd 414 00 00 00 rcs 417 00 00 00...

linux awk命令詳解

awk 儘管操作可能會很複雜,但語法總是這樣,其中 pattern 表示 awk 在資料中查詢的內容,而 action 是在找到匹配內容時所執行的一系列命令。花括號 不需要在程式中始終出現,但它們用於根據特定的模式對一系列指令進行分組。pattern就是要表示的正規表示式,用斜槓括起來。awk 語言...