亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2091 | 回復: 1
打印 上一主題 下一主題

awk 簡單用法 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-07-16 16:23 |只看該作者 |倒序瀏覽
做為一個windows系統(tǒng)管理員,文本處理將是一個難點,但在linux 里面顯然就是一盤小白菜.在linux 文本處理工具上面,awk占了60%的份量,另外還有sed與grep ,這里主要記錄一些awk常見的使用方法,詳細的大家可以舉一反三,
awk 這不是一個單詞,而是這門語言的創(chuàng)始人(三個人: Alfred V. Aho、Peter J. We i n b e rg e r、Brian W. Kernighan)簡稱,所以你別指望著從你的英文字典里面找出這個單詞的意思.呵呵
言歸正傳:
gawk 是GNU計劃下的awk ,包含了awk下的所有功能,一門程序語言,故就有著他固定的格式.gawk 當然也不能例外了,基本格式為:
   gawk '/pattern/ {action}' file.txt
里面的pattern用//括起來,action 用花括號括起來,action也可以不寫.
好,先讓我們一起看個例子吧:
   gawk '/rpcuser/' /etc/passwd
這句話指的是將/etc/passwd這個file中包含了rpcuser的整行一起輸出,是不是很方便呀?
當然你也許還有更苛刻的需求,要求輸出第3個字段,想知道他是否能夠登錄?這樣你只需要在里面增加一個action就OK了,試試看吧:
   gawk '/rpcuser/ {print $3}' /etc/passwd
解釋一下:
    /rpcuser/ 這里面的/ /是一個pattern 指include rpcuser 的所有l(wèi)ine;  {print $3}是一個action,用{}來表示,默認gawk 是以空格或者tab鍵來給每一行分區(qū)塊的,第一個區(qū)塊為$1,第二個區(qū)塊為$2 依此類推
當然你也可以將區(qū)塊分隔符號修改成其它,如冒號,分號,逗號等,舉例如下:
gawk -F ":" '/rpcuser/ {print $2}' /etc/passwd
注意:在這里面-F中的F一定要大寫

還可以將文件區(qū)域進行計算.如:
運算符說明示例
+ 加法運算
- 減法運算
* 乘法運算
/ 除法運算
^ 乘方運算3^2 (=9)
% 求余數(shù)9%4 (=1)
在awk 中如下表示:gawk '/**/ {print $2/100}' file.txt   第三個字段除以一百的結果
還支持表達式,如action也可以寫成這樣{print $1+$2*$3}

awk 還有一些內(nèi)部函數(shù),如
g a w k中有各種的內(nèi)部函數(shù),現(xiàn)在介紹如下:
6.6.1 隨機數(shù)和數(shù)學函數(shù)
sqrt(x) 求x 的平方根
sin(x) 求x 的正弦函數(shù)
cos(x) 求x 的余弦函數(shù)
a t a n 2 ( x,y) 求x / y的余切函數(shù)
log(x) 求x 的自然對數(shù)
exp(x) 求x 的e 次方
int(x) 求x 的整數(shù)部分
rand() 求0 和1之間的隨機數(shù)
srand(x) 將x 設置為r a n d ( )的種子數(shù)
還有字符串的內(nèi)部函數(shù),如:
index 函數(shù)  格式:{print index("technical", "ch")} 尋找ch 出現(xiàn)在字符串technical中位置,結果為3.

length 函數(shù) 格式: length(abcde) 結果5 .
match (string, example)  在字符串string中找到最靠左邊的example 的位置.
sprintf 與printf 相似
sub ( regexp,replacement,target) 在字符串target中尋找符合regexp 的最長、最靠左的地方,以字串replacement 代替最左邊的regexp。
例如:
str = "water,water,everywhere"
sub ( /at/, "ith",str)
返回結果為:wither, water, everywhere

substr (string, start, length )返回字符串string的子字符串,如:
substr (washingdun,5,3) 返回的字符串為從第五個字符開始,長度為三個字符,即ing

tolower (string) 將string轉化為小寫字母
toupper (string) 將string轉化為大寫字母

close (filename) 關閉文件
system(command),這個函數(shù)允許執(zhí)行系統(tǒng)命令.
gawk '$1 != "Tim" {print}' testfile  
       testfile文本當中第一個字段不等于Tim的行打印出來.
格式化輸出:
     gawk '$1 != "Tim" {print $1,$5,$6,$2}' testfile
進一步,你可以在print動作中加入字符串,例如:
gawk '$1!="Tim" {print "The entry for ",$ 1,"is not Tim. ",$2}' testfile
注意:print 中的每一部份都得用逗號隔開.

很神奇吧,可我想知道gawk 到底能用在哪些地方:
• 根據(jù)要求選擇文件的某幾行,幾列或部分字段以供顯示輸出。
• 分析文檔中的某一個字出現(xiàn)的頻率、位置等。
• 根據(jù)某一個文檔的信息準備格式化輸出。
• 以一個功能十分強大的方式過濾輸出文檔。
• 根據(jù)文檔中的數(shù)值進行計算。
詳細的以后慢慢再寫,從久了感覺有點不舒服了.

本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u3/95231/showart_1998311.html

論壇徽章:
0
2 [報告]
發(fā)表于 2009-07-17 21:23 |只看該作者
很棒
謝謝

我正大算買《awk&sed》oreilly版本的
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP