第九章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...