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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
1234下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 19128 | 回復(fù): 33
打印 上一主題 下一主題

【原創(chuàng)】sed與awk學(xué)習(xí)筆記 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-03-10 22:21 |只看該作者 |倒序?yàn)g覽
版權(quán)聲明:
本文遵循“署名-非商業(yè)性使用-相同方式共享 2.5 中國(guó)大陸”協(xié)議
您可以自由復(fù)制、發(fā)行、展覽、表演、放映、廣播或通過(guò)信息網(wǎng)絡(luò)傳播本作品
您可以根據(jù)本作品演義自己的作品
您必須按照作者或者許可人指定的方式對(duì)作品進(jìn)行署名。
您不得將本作品用于商業(yè)目的。
如果您改變、轉(zhuǎn)換本作品或者以本作品為基礎(chǔ)進(jìn)行創(chuàng)作,您只能采用與本協(xié)議相同的許
可協(xié)議發(fā)布基于本作品的演繹作品。
對(duì)任何再使用或者發(fā)行,您都必須向他人清楚地展示本作品使用的許可協(xié)議條款。
如果得到著作權(quán)人的許可,您可以不受任何這些條件的限制。


整理這么一份筆記是因?yàn)樗吹降拇蠖鄷?shū)籍與文檔太晦澀,讓人讀著很累,更容易走神。
我很喜歡鳥(niǎo)哥的風(fēng)格,更平易近人一些,所以這篇文檔也盡力寫(xiě)的更通俗。
39頁(yè)的word文檔,不是很多,但的確是自己寫(xiě)過(guò)的最多的一次,錯(cuò)誤之處在所難免,歡迎交流探討~!


SED與AWK學(xué)習(xí)筆記

張逸群 jeantoe@gmail.com

Blog www.zhangyiqun.cn

前言
開(kāi)卷有益。
在it領(lǐng)域有很多學(xué)習(xí)的途徑,個(gè)人認(rèn)為最好的學(xué)習(xí)教材是原版圖書(shū),但由于語(yǔ)言上的問(wèn)題,大多數(shù)人只能望書(shū)興嘆。這39頁(yè)的文檔是根據(jù)我自學(xué)時(shí)的實(shí)際情況,和大多數(shù)的實(shí)際需要情況所寫(xiě)。其中示例大部分參考了O'Reilly.SED and AWK 。
每篇文章中所帶的小練習(xí)或來(lái)自工作或來(lái)自網(wǎng)絡(luò),希望讀者能夠多加練習(xí),實(shí)踐才是王道。
文檔完成于2009-1-31
基本概念
Sed是一個(gè)“非交互式”的面向字符流的編輯器。
這個(gè)面向字符流就像是我去餐廳點(diǎn)了一道菜讓廚師做,菜都是字符,廚師做好后直接送到我面前。所以我只要下達(dá)命令就好。

Sed的優(yōu)點(diǎn)是可以在一個(gè)地方指定所有的編輯指令,然后通過(guò)文件傳遞一次來(lái)執(zhí)行他們。但是它在每次多于一行的處理能力方面有限制。
Awk的典型應(yīng)用是將數(shù)據(jù)轉(zhuǎn)換成格式化的報(bào)表。增強(qiáng)可讀性。因此當(dāng)數(shù)據(jù)有某種結(jié)構(gòu)時(shí)就能最好的體現(xiàn)awk的好處。Awk的功能是非常強(qiáng)大的,甚至可以說(shuō)成是程序設(shè)計(jì)語(yǔ)言。

基本操作
框架:
命令 選項(xiàng) 工作內(nèi)容 文件名
Sed和awk的輸出都不允許送到向程序提供輸入的同一個(gè)文件,否則會(huì)使它變成亂碼。如果工作內(nèi)容中包含shell可執(zhí)行的字符如“$和*”,那么必須用單引號(hào)引起。
Sed和awk都可以用-f來(lái)指定工作內(nèi)容,這通常就是腳本存放的位置。
使用過(guò)程中,短的腳本可以在命令行上指定,長(zhǎng)的腳本通常放在容易被修改和測(cè)試的文件中。

在sed和awk中,每個(gè)指令都包含兩個(gè)部分,模式和語(yǔ)句。模式是由/分隔的正則。語(yǔ)句指定一個(gè)或多個(gè)將被執(zhí)行的動(dòng)作。
Awk不自動(dòng)輸出行,腳本中的指令控制awk最終所做的事情。
Sed的語(yǔ)句由類(lèi)似于行編輯器中使用的那些編輯命令組成。大部分命令由單個(gè)字母組成。
Awk的語(yǔ)句由程序設(shè)計(jì)語(yǔ)句和函數(shù)組成,語(yǔ)句必須用大括號(hào)括起。

初識(shí)sed
最常見(jiàn)的s 。替換字符串。
$ sed 's/MA/Massachusetts/' list
找出MA并替換成Massachusetts
John Daggett, 341 King Road, Plymouth Massachusetts
Alice Ford, 22 East Broadway, Richmond VA
Orville Thomas, 11345 Oak Bridge Road, Tulsa OK
Terry Kalkas, 402 Lans Road, Beaver Falls PA
Eric Adams, 20 Post Road, Sudbury Massachusetts
Hubert Sims, 328A Brook Road, Roanoke VA
Amy Wilde, 334 Bayshore Pkwy, Mountain View CA
Sal Carpenter, 73 6th Street, Boston Massachusetts
并不是在任何情況下都要將指令用單引號(hào)包圍起來(lái),但你應(yīng)該養(yǎng)成這個(gè)習(xí)慣。
在城市和州之間放置逗號(hào),這時(shí)候就需要單引號(hào)。
$ sed 's/ MA/, Massachusetts/' list
John Daggett, 341 King Road, Plymouth, Massachusetts
Alice Ford, 22 East Broadway, Richmond VA
Orville Thomas, 11345 Oak Bridge Road, Tulsa OK
Terry Kalkas, 402 Lans Road, Beaver Falls PA
Eric Adams, 20 Post Road, Sudbury, Massachusetts
Hubert Sims, 328A Brook Road, Roanoke VA
Amy Wilde, 334 Bayshore Pkwy, Mountain View CA
Sal Carpenter, 73 6th Street, Boston, Massachusetts
如果不加單引號(hào),那么會(huì)得到一個(gè)錯(cuò)誤提示sed: -e expression #1, char 2: unterminated `s' command
關(guān)閉自動(dòng)輸出,只打印被修改行。這里用了參數(shù)-n(關(guān)閉自動(dòng)輸出)和p(打印被修改行)
$ sed -n -e 's/MA/Massachusetts/p' list
John Daggett, 341 King Road, Plymouth Massachusetts
Eric Adams, 20 Post Road, Sudbury Massachusetts
Sal Carpenter, 73 6th Street, Boston Massachusetts

在命令行上編寫(xiě)多個(gè)語(yǔ)句。
使用;分隔
sed 's/ MA/, Massachusetts/; s/ PA/, Pennsylvania/' list
使用-e
sed -e 's/ MA/, Massachusetts/' -e 's/ PA/, Pennsylvania/' list

初識(shí)awk
為了能和shell區(qū)分開(kāi),awk的指令都必須包括單引號(hào),因?yàn)?這類(lèi)符號(hào)在shell中是有特殊意義的。雖然awk與sed指令的結(jié)構(gòu)相同,但awk中用語(yǔ)句和函數(shù)取代了使用一個(gè)或兩個(gè)字符組成的命令。

Awk將每個(gè)輸入行識(shí)別成一條記錄,而將那一行上的每個(gè)單詞識(shí)別成一個(gè)字段。

$ awk '{ print $1 }' list
John
Alice
Orville
Terry
Eric
Hubert
Amy
Sal
打印含有MA的行
$ awk '/MA/' list
John Daggett, 341 King Road, Plymouth MA
Eric Adams, 20 Post Road, Sudbury MA
Sal Carpenter, 73 6th Street, Boston MA
打印含有MA的行的第一個(gè)字段
$ awk '/MA/ { print $1 }' list
John
Eric
Sal
使用-F指定字段分隔符為逗號(hào)。意思是說(shuō)逗號(hào)前的字段是$1或者$其他。這就使得原來(lái)可能$1 $2的內(nèi)容都合并成了$1。
$ awk -F, '{ print $1; print $2; print $3 }' list
John Daggett
341 King Road
Plymouth MA
Alice Ford
22 East Broadway
Richmond VA
Orville Thomas
11345 Oak Bridge Road
Tulsa OK
Terry Kalkas
402 Lans Road
Beaver Falls PA
Eric Adams
20 Post Road
Sudbury MA
Hubert Sims
328A Brook Road
Roanoke VA
Amy Wilde
334 Bayshore Pkwy
Mountain View CA
Sal Carpenter
73 6th Street
Boston MA
新手常見(jiàn)錯(cuò)誤
沒(méi)有用大括號(hào){}。沒(méi)有用單引號(hào)’’。沒(méi)有用斜杠將正則括起來(lái)//。

正則表達(dá)式
引語(yǔ)
Grep、sed、awk都使用正則,然而這3個(gè)程序并不能完全使用正則表達(dá)式語(yǔ)法中的所有元字符。所謂元字符就是指那些在正則表達(dá)式中具有特殊意義的專(zhuān)用字符,可以用來(lái)規(guī)定其前導(dǎo)字符(即位于元字符前面的字符)在目標(biāo)對(duì)象中的出現(xiàn)形式。
注:本篇十分簡(jiǎn)陋,想深入學(xué)習(xí)正則可以找一本《精通正則表達(dá)式》。

表達(dá)式
表達(dá)式告訴計(jì)算機(jī)如何產(chǎn)生結(jié)果。但和加減乘除一樣,在式子中也存在著優(yōu)先級(jí)的問(wèn)題。需要注意的一點(diǎn)是正則是區(qū)分大小寫(xiě)的。
那么正則是如何工作的呢,請(qǐng)看下圖。

[ 本帖最后由 jean2e 于 2009-3-11 18:53 編輯 ]

sed與awk.rar

253.56 KB, 下載次數(shù): 1016

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2009-03-10 22:27 |只看該作者

回復(fù) #1 jean2e 的帖子

這么晚還上傳,支持一下

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2009-03-10 22:30 |只看該作者
寫(xiě)的不錯(cuò),值得收藏,哈哈ing

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2009-03-10 22:45 |只看該作者
謝謝樓上二位的支持
補(bǔ)充說(shuō)明下:文檔中出現(xiàn)的代碼我全部練習(xí)過(guò)多遍,朋友們有不理解的可以和我交流哦~

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2009-03-10 22:46 |只看該作者
謝謝!辛苦了

不過(guò),請(qǐng)問(wèn)為什么要用word文檔?我看了一下,只有一張圖可能一般的編輯器不能用之外,其它的用一般的編輯器都可完成
我不是有偏見(jiàn),而是為了看這個(gè),我得用打開(kāi)一個(gè)word(資資啊)

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2009-03-10 22:47 |只看該作者
嚴(yán)重支持!

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2009-03-10 22:50 |只看該作者

回復(fù) #5 haimming 的帖子

因?yàn)榉奖憔庉嬔剑热缗獋(gè)加大號(hào)字體什么的。這個(gè)文檔用google的在線doc看也不錯(cuò),不用跑word

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2009-03-10 22:57 |只看該作者

回復(fù) #7 jean2e 的帖子

google在線doc,沒(méi)試過(guò),聽(tīng)起來(lái)不錯(cuò),學(xué)習(xí)了

不過(guò),還是支持純文本,個(gè)人意見(jiàn),個(gè)人喜好吧

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2009-03-11 09:29 |只看該作者
不錯(cuò),瀏覽了一下。值得新手學(xué)習(xí)一大把。

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2009-03-11 09:35 |只看該作者
謝謝共享,支持一下,正好要找這方面的資料呢!
您需要登錄后才可以回帖 登錄 | 注冊(cè)

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP