- 論壇徽章:
- 0
|
awk程序設(shè)計(jì)語(yǔ)言又叫做'樣式掃描和處理語(yǔ)言'.
語(yǔ)法:
awk [ -F re] [parameter...] ['prog'] [-f progfile][in_file...]
參數(shù)說(shuō)明:
-F re:允許awk更改其字段分隔符.缺省的分隔符為空格,如:-F % ,-F ^
parameter: 該參數(shù)幫助為不同的變量賦值.
'prog': awk的程序語(yǔ)句段.
這個(gè)語(yǔ)句段必須用單拓號(hào)和單引號(hào)'{}'括起,以防被shell解釋。這個(gè)程序語(yǔ)句段的標(biāo)準(zhǔn)形式為:
'pattern {action}'
其中pattern參數(shù)可以是egrep正則表達(dá)式中的任何一個(gè),它可以使用語(yǔ)法/re/再加上一些樣式匹配技巧構(gòu)成。與sed類似,你也可以使用","分開(kāi)兩樣式以選擇某個(gè)范圍。關(guān)于匹配的細(xì)節(jié),你可以參考附錄,如果仍不懂的話,找本UNIX書學(xué)學(xué)grep和sed(本人是在學(xué)習(xí)ed時(shí)掌握匹配技術(shù)的)。action參數(shù)總是被大括號(hào)包圍,它由一系統(tǒng)awk語(yǔ)句組成,各語(yǔ)句之間用";"分隔。awk解釋它們,并在pattern給定的樣式匹配的記錄上執(zhí)行其操作。與shell類似,你也可以使用“#”作為注釋符,它使“#”到行尾的內(nèi)容成為注釋,在解釋執(zhí)行時(shí),它們將被忽略。你可以省略pattern和action之一,但不能兩者同時(shí)省略,當(dāng)省略pattern時(shí)沒(méi)有樣式匹配,表示對(duì)所有行(記錄)均執(zhí)行操作,省略action時(shí)執(zhí)行缺省的操作——在標(biāo)準(zhǔn)輸出上顯示.
-f progfile:允許awk調(diào)用并執(zhí)行progfile指定有程序文件。progfile是一個(gè)文本文件,他必須符合awk的語(yǔ)法。
in_file:awk的輸入文件,awk允許對(duì)多個(gè)輸入文件進(jìn)行處理。值得注意的是awk不修改輸入文件。如果未指定輸入文件,awk將接受標(biāo)準(zhǔn)輸入,并將結(jié)果顯示在標(biāo)準(zhǔn)輸出上。awk支持輸入輸出重定向。
1.awk的常規(guī)表達(dá)式元字符
-------------------------------------
\ 換碼序列
^ 在字符串的開(kāi)頭開(kāi)始匹配
$ 在字符串的結(jié)尾開(kāi)始匹配
. 與任何單個(gè)字符串匹配
[ABC] 與[]內(nèi)的任一字符匹配
[A-Ca-c] 與A-C及a-c范圍內(nèi)的字符匹配(按字母表順序)
[^ABC] 與除[]內(nèi)的所有字符以外的任一字符匹配
Desk|Chair 與Desk和Chair中的任一個(gè)匹配
[ABC][DEF] 關(guān)聯(lián)。與A、B、C中的任一字符匹配,且其后要跟D、E、F中的任一個(gè)字符。
* 與A、B或C中任一個(gè)出現(xiàn)0次或多次的字符相匹配
+ 與A、B或C中任何一個(gè)出現(xiàn)1次或多次的字符相匹配
? 與一個(gè)空串或A、B或C在任何一個(gè)字符相匹配
(Blue|Black)berry 合并常規(guī)表達(dá)式,與Blueberry或Blackberry相匹配
2.awk算術(shù)運(yùn)算符
----------------------------
x^y x的y次冪
x**y 同上
x%y 計(jì)算x/y的余數(shù)(求模)
x+y x加y
x-y x減y
x*y x乘y
x/y x除y
-y 負(fù)y(y的開(kāi)關(guān)符號(hào));也稱一目減
++y y加1后使用y(前置加)
y++ 使用y值后加1(后綴加)
--y y減1后使用y(前置減)
y-- 使用后y減1(后綴減)
x=y 將y的值賦給x
x+=y 將x+y的值賦給x
x-=y 將x-y的值賦給x
x*=y 將x*y的值賦給x
x/=y 將x/y的值賦給x x%=y 將x%y的值賦給x
x^=y 將x^y的值賦給x
x**=y 將x**y的值賦給x
3.awk允許的測(cè)試:
----------------------------
操作符 含義
x==y x等于y
x!=y x不等于y
x>y x大于y
x>=y x大于或等于y
x
4.awk的操作符(按優(yōu)先級(jí)升序排列)
---------------------------------
= 、+=、 -=、 *= 、/= 、 %=
||
&&
> >=
5.awk內(nèi)置變量(預(yù)定義變量)
---------------------------------------
說(shuō)明:表中v項(xiàng)表示第一個(gè)支持變量的工具(下同):A=awk,N=nawk,P=POSIX awk,G=gawk
V 變量 含義 缺省值
--------------------------------------------------------
N ARGC 命令行參數(shù)個(gè)數(shù)
G ARGIND 當(dāng)前被處理文件的ARGV標(biāo)志符
N ARGV 命令行參數(shù)數(shù)組
G CONVFMT 數(shù)字轉(zhuǎn)換格式 %.6g
P ENVIRON UNIX環(huán)境變量
N ERRNO UNIX系統(tǒng)錯(cuò)誤消息
G FIELDWIDTHS 輸入字段寬度的空白分隔字符串
A FILENAME 當(dāng)前輸入文件的名字
P FNR 當(dāng)前記錄數(shù)
A FS 輸入字段分隔符 空格
G IGNORECASE 控制大小寫敏感0(大小寫敏感)
A NF 當(dāng)前記錄中的字段個(gè)數(shù)
A NR 已經(jīng)讀出的記錄數(shù)
A OFMT 數(shù)字的輸出格式 %.6g
A OFS 輸出字段分隔符 空格
A ORS 輸出的記錄分隔符 新行
A RS 輸入的記錄他隔符 新行
N RSTART 被匹配函數(shù)匹配的字符串首
N RLENGTH 被匹配函數(shù)匹配的字符串長(zhǎng)度
N SUBSEP 下標(biāo)分隔符 "\034"
6.awk的內(nèi)置函數(shù)
---------------------------------
V 函數(shù) 用途或返回值
------------------------------------------------
N gsub(reg,string,target) 每次常規(guī)表達(dá)式reg匹配時(shí)替換target中的string
N index(search,string) 返回string中search串的位置
A length(string) 求串string中的字符個(gè)數(shù)
N match(string,reg) 返回常規(guī)表達(dá)式reg匹配的string中的位置
N printf(format,variable) 格式化輸出,按format提供的格式輸出變量variable。
N split(string,store,delim) 根據(jù)分界符delim,分解string為store的數(shù)組元素
N sprintf(format,variable) 返回一個(gè)包含基于format的格式化數(shù)據(jù),variables是要放到串中的數(shù)據(jù)
G strftime(format,timestamp) 返回一個(gè)基于format的日期或者時(shí)間串,timestmp是systime()函數(shù)返回的時(shí)間
N sub(reg,string,target) 第一次當(dāng)常規(guī)表達(dá)式reg匹配,替換target串中的字符串
A substr(string,position,len) 返回一個(gè)以position開(kāi)始len個(gè)字符的子串
P totower(string) 返回string中對(duì)應(yīng)的小寫字符
P toupper(string) 返回string中對(duì)應(yīng)的大寫字符
A atan(x,y) x的余切(弧度)
N cos(x) x的余弦(弧度)
A exp(x) e的x冪
A int(x) x的整數(shù)部分
A log(x) x的自然對(duì)數(shù)值
N rand() 0-1之間的隨機(jī)數(shù)
N sin(x) x的正弦(弧度)
A sqrt(x) x的平方根
A srand(x) 初始化隨機(jī)數(shù)發(fā)生器。如果忽略x,則使用system()
G system() 返回自1970年1月1日以來(lái)經(jīng)過(guò)的時(shí)間(按秒計(jì)算)
本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u2/71975/showart_1859085.html |
|