shell指令碼之awk 一

2022-08-30 13:12:10 字數 1322 閱讀 2090

2.linux中常用的awk編譯器版本有mawk,gawk。redhat使用的是gawk,ubuntu使用的是mawk.

1. 逐行掃瞄檔案,尋找匹配你指定模式的行,並在這些行上執行你指定的操作;

2. awk 基本結構包括模式匹配(用於找到要處理的行)和處理過程(即處理動作)。 

3. awk 有兩個特殊的模式:begin 和 end,他們被放置在沒有讀取任何資料之前以及在所有資料讀取完成以後執行。

awk 讀取檔案內容的每一行時,將對比改行是否與給定的模式相匹配,

如果匹配則執行處理過程,否則對該行不做任何處理。

如果沒有指定處理指令碼,則把匹配的行顯示到標準輸出,即預設處理動作是 print 列印行;

如果沒有指定模式匹配,則預設匹配所有資料。

awk程式指令碼用一對花括號來定義,必須將指令碼命令放在兩個花括號{}中。此外,由於awk假定程式指令碼是單個文字字串,因此必須還要將指令碼放到單引號中。

下面的例子在命令列上指定了乙個簡單的hello world例子:

$ awk ''

1. 格式: awk [ posix or gnu style options ] -f program-file [ -- ] file ...

注釋:posix or gnu style options 表示 gawk 支援 posix 以及 gnu 兩種選項;

-f 後接指令碼檔案;file 表示準備處理的文件名稱。

2、awk常用選項引數

-f th:指定分隔符為fs(預設分隔符為空格或製表符);

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

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

-v a=1:設定乙個變數a,值為1

-f awk.sh :從指令碼檔案awk.sh中讀取awk指令,以取代在命令引數中輸入處理指令碼。

3. awk內建變數 

argc:       命令列引數個數 

filename:   當前輸入文件的名稱 

fnr:        當前輸入文件的當前記錄編號,尤其當有多個輸入文件時有用

nr:         輸入流的當前記錄編號 

nf:         當前記錄的字段個數 

fs:         字段分隔符 

ofs:        輸出字段分隔符,預設為空格 

ors:        輸出記錄分隔符,預設為換行符\n 

rs:         輸入記錄分隔符,預設為換行符\n

shell指令碼之awk

一 什麼是awk awk其實相當於一門可以處理資料文字的語言,這麼說的原因是其具有很多類c語言的語法,如 變數,陣列,函式,流程控制等,其由aho,weinberger,kernighan大約在1977年開發完成,隨後被引入unix linux中。二 awk可以幹什麼 awk是乙個非常強大的資料處理...

shell指令碼 awk的用法

語法格式 awk 選項 指令 操作檔案 常用選項 f 指定分隔符,分隔符用 引起來 v var value在awk程式開始之前指定乙個值valu給變數var,這些變數值用於awk程式的begin快 f 後面跟乙個儲存了awk程式的檔案,代替在命令列指定awk程式 awk 1.txt 逐行讀取檔案1....

shell指令碼以及awk學習

awk filenameawk end filename if e root temp then echo yes else echo no fisort n filenamegrep r 123 root temptemp txt mktemp tempx.cat dev urandom stri...