unix shell 程式設計指南第九章 awk

2021-06-23 02:19:32 字數 1631 閱讀 2922

第九章awk

awk有兩個特殊字段。begin和end。使用begin可以設定計數和列印頭。

begin語句使用在任何文字遊覽動作之前,之後文字動作遊覽動作依據輸入檔案

開始執行。end語句用來在awk完成文字遊覽動作後列印輸出文字總數和結尾狀態標誌。

列印報告頭:

awk 'begin ' /tmp/test.txt

\n迫使強行啟動新行。列印資訊頭放置在begin模式部分,因為列印資訊頭被界定為乙個動作,必須用大括號括起來。

列印資訊尾:

如果在末行加入end of report資訊,可以使用end語句。end在所有文字處理動作執行完成後才被執行。

awk '  end ' /tmp/test.txt

awk 'begin end ' /tmp/test.txt

awk中的正規表示式

為使一域號匹配正規表示式,使用符號~後緊跟正規表示式,也可使用if語句。

awk中if後面的條件用()括起來。

awk '' /tmp/test.txt##列印第一列=001的行

精確匹配用「==」

查詢第二列是aaa的行

awk '$2=="aaa" ' /tmp/test.txt

不匹配是!

awk '' /tmp/test.txt##列印第一列不是001的行

小於awk '' /tmp/test.txt

任意字元

點代表字元

awk '$1 ~/^..1/' /tmp/test.txt##行首前兩個字元任意,第三個字元是1

關係匹配

使用|意味著匹配兩邊模式之一

awk '$1~/(001|002)/' /tmp/test.txt

語句必須用圓括號擴起來

and 

使用&&awk '' /tmp/test.txt

or使用||

awk內建變數

nr:已讀的記錄數

nf:域的個數

$nf:最後乙個域

利用nr建立行號:awk '' /tmp/test.txt

至少有一條記錄才進行查詢:awk '' /tmp/test.txt

修改數值域取值

實際輸入檔案不可修改修改的是備份。

awk '' /tmp/test.txt

增加列值:

awk '(total+=$3); end' /tmp/test.txt

內建字串函式

gsub(r,s)/(r,s,t)

index(s,t)

length(s)

match(s,r)

split(s,a,fs)

sprint(frnt,exp)

sub(r,s)

substr(s,p)/(s,p,n)

awk 'begin ' return 3

awk 'begin '

awk '' /tmp/test.txt

設定輸入域到域變數名

設定方式為name=$n

awk '' /tmp/test.txt

return aaa is 45

向一行awk命令傳值

awk 命令變數=輸入檔案值

awk '' age=100 /tmp/test.txt

UNIX Shell 程式設計 1

unix shell 程式設計 1 unix只能識別3種基本的檔案型別 普通檔案 目錄檔案和特殊檔案。普通檔案 any file on the system that contains data,test,program instructions,or just about anything els...

UNIX Shell 程式設計 2

unix shell 程式設計 2 字元匹配 星號 匹配0個以上的字元 而問號 則匹配1個字元。如 ls a z 0 9 表示顯示檔名以小寫字母開始,且以數字結尾的檔案列表。輸出重定向 命令的輸出一般是提交到標準輸出裝置,可以轉向到檔案內,這叫輸出重定向。在有標準輸出的命令後,新增 file符號後,...

UNIX Shell 程式設計 1

unix shell 程式設計 1 unix只能識別3種基本的檔案型別 普通檔案 目錄檔案和特殊檔案。普通檔案 any file on the system that contains data,test,program instructions,or just about anything els...