熱搜:win11繞過硬件限制安裝 一鍵重裝Win10系統(tǒng) 最干凈的u盤啟動盤 真正純凈版的win7系統(tǒng)
時間:2015-01-14 18:22:52 作者:qipeng 來源:系統(tǒng)之家 1. 掃描二維碼隨時看資訊 2. 請使用手機瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20150114/34882.html 手機查看 評論 反饋
c.awk ’BEGIN{
for(k in ENVIRON)
{
print k“=”ENVIRON[k];
}
}‘ #ENVIRON是awk常量,是數(shù)組
d.awk ’BEGIN{
total=0;
for(i=0;i《=100;i++)
{
total+=i;
}
print total;
}‘
e.awk ’BEGIN{
total=0;
i=0;
do
{
total+=i;
i++;
}while(i《=100)
print total;
}‘
5.內(nèi)置函數(shù)
a.算術(shù)函數(shù)
awk ’BEGIN{OFMT=“%.3f”;fs=sin(1);fe=exp(10);fl=log(10);fi=int(3.1415);print fs,fe,fl,fi;}‘ #OFMT 設(shè)置輸出數(shù)據(jù)格式是保留3位小數(shù)
awk ’BEGIN{srand();fr=int(100*rand());print fr;}‘ #獲得隨機數(shù)
b.字符串函數(shù)
awk ’BEGIN{info=“this is a test2010test!”;gsub(/[0-9]+/,“!”,info);print info}‘ #在 info中查找滿足正則表達式,/[0-9]+/ 用””替換,并且替換后的值,賦值給info 未給info值,默認是$0
awk ’BEGIN{info=“this is a test2010test!”;print index(info,“test”)?“ok”:“no found”;}‘
awk ’BEGIN{info=“this is a test2010test!”;print match(info,/[0-9]+/)?“ok”:“no found”;}‘ #正則匹配
awk ’BEGIN{info=“this is a test2010test!”;print substr(info,4,10);}‘ #從第 4個 字符開始,截取10個長度字符串
awk ’BEGIN{info=“this is a test”;split(info,tA,“ ”);print length(tA);for(k in tA){print k,tA[k];}}‘ #分割info,動態(tài)創(chuàng)建數(shù)組tA
c.時間函數(shù)
awk ’BEGIN{tstamp=mktime(“2001 01 01 12 12 12”);print strftime(“%c”,tstamp);}‘
awk ’BEGIN{tstamp1=mktime(“2001 01 01 12 12 12”);tstamp2=mktime(“2001 02 01 0 0 0”);print tstamp2-tstamp1;}‘ #求2個時間段中間時間差
d.其他函數(shù)
awk ’BEGIN{while(“cat /etc/passwd”|getline){print $0;};close(“/etc/passwd”);}‘ #打開外部文件
awk ’BEGIN{while(getline 《 “/etc/passwd”){print $0;};close(“/etc/passwd”);}‘ #逐行讀取外部文件
awk ’BEGIN{print “Enter your name:”;getline name;print name;}‘
awk ’BEGIN{b=system(“ls -al”);print b;}‘ #調(diào)用外部應(yīng)用程序
6.輸出函數(shù)
a.printf
awk ’BEGIN{n1=124.113;n2=-1.224;n3=1.2345; printf(“%.2f,%.2u,%.2g,%X,%o\n”,n1,n2,n3,n1,n1);}‘ #類似于C語音
7.awk腳本
#!/bin/awk -f
BEGIN{
for(i=1;i《=9;i++)
{
for(j=1;j《=9;j++)
{
tarr[i,j]=i*j;
print i,“*”,j,“=”,tarr[i,j];
}
}
}
注意
1.在awk中有兩個特別的表達式,BEGIN和END,這兩者都可用于pattern中,提供BEGIN和END的作用是給程序賦予初始狀態(tài)和程序結(jié)束之后執(zhí)行一些掃尾的工作。任何在BEGIN之后列出的操作(在{}內(nèi))將在awk開始掃描輸入之前執(zhí)行,而END之后的操作將在掃描完全部的輸入之后執(zhí)行。因此通常BEGIN來顯示變量和初始化變量,使用END來輸出最終結(jié)果。
2.awk中數(shù)據(jù)類型,是不需要定義,自適應(yīng)的。 有時候需要通過(+、“”)強制轉(zhuǎn)換。
3.awk數(shù)組下標是從1開始,與c數(shù)組不一樣。
4.awk的多維數(shù)組在本質(zhì)上是一維數(shù)組,更確切一點,awk在存儲上并不支持多維數(shù)組。awk提供了邏輯上模擬二維數(shù)組的訪問方式。例 如,array[2,4] = 1這樣的訪問是允許的。awk使用一個特殊的字符串SUBSEP (\034)作為分割字段,在上面的例子中,關(guān)聯(lián)數(shù)組array存儲的鍵值實際上是2\0344。多維數(shù)組可以使用if((i,j) in array)這樣的語法,但是下標必須放置在圓括號中。多維數(shù)組使用 for ( item in array )這樣的語法遍歷數(shù)組。與一維數(shù)組不同的是,多維數(shù)組必須使用split()函數(shù)來訪問單獨的下標分量。split ( item, subscr, SUBSEP)
5.awk實現(xiàn)的性能是比shell實現(xiàn)的強
上面就是Linux下awk文本處理工具的用法介紹了,因為awk是Linux下功能最強大的數(shù)據(jù)處理引擎之一,所以其用法要講解起來可不止文中介紹的這些,本文只是介紹了它的基本用法。
發(fā)表評論
共0條
評論就這些咯,讓大家也知道你的獨特見解
立即評論以上留言僅代表用戶個人觀點,不代表系統(tǒng)之家立場