- 論壇徽章:
- 1
|
本帖最后由 rdcwayx 于 2012-05-03 10:01 編輯
編者按:由 wingger 整理的 shell基礎(chǔ)十二篇 以及L_kernel補(bǔ)充的第十三——二十篇,涉及shell 編程及使用的各個(gè)方面,又附有大量的例子,極適合初學(xué)者系統(tǒng)學(xué)習(xí)。如果配合網(wǎng)中人的shell 十三問(wèn)? ,效果更加明顯。
這里是其中的第十章 sed. 其他各章可察看相應(yīng)的 link.
shell基礎(chǔ)1:文件安全與權(quán)限
http://72891.cn/thread-434579-1-1.html
附:Linux的用戶和用戶組管理
http://72891.cn/thread-438660-1-1.html
shell基礎(chǔ)二:查找技巧,find及xargs的使用
http://72891.cn/thread-441883-1-1.html
shell基礎(chǔ)三和四:后臺(tái)(crontab,at,&,nohup)及(*,?,[]等)
http://72891.cn/thread-442596-1-1.html
shell基礎(chǔ)五:輸入和輸出(echo,read,cat,管道,tee,重定向等)
http://72891.cn/thread-444209-1-1.html
shell基礎(chǔ)六七:命令執(zhí)行順序(||及&&,{}及())和正則表?
http://72891.cn/thread-445229-1-1.html
shell基礎(chǔ)八:文本過(guò)濾工具(grep)
http://72891.cn/thread-446683-1-1.html
shell基礎(chǔ)九:awk
http://72891.cn/thread-448687-1-1.html
shell基礎(chǔ)十:sed
http://72891.cn/thread-452942-1-1.html
shell基礎(chǔ)11:文件分類、合并和分割(sort,uniq,join,cut,paste,split)
http://72891.cn/thread-457730-1-1.html
shell基礎(chǔ)十二:tr
http://72891.cn/thread-459099-1-1.html
感謝L_kernel補(bǔ)充的第十三——二十篇(cjaizss添加)
shell基礎(chǔ)第十三篇-登錄環(huán)境
http://72891.cn/thread-1820174-1-1.html
shell基礎(chǔ)第十四篇-環(huán)境和shell變量
http://72891.cn/thread-1820194-1-1.html
shell基礎(chǔ)第十五篇-引號(hào)
http://72891.cn/thread-1820220-1-1.html
shell基礎(chǔ)第十六篇-shell腳本介紹
http://72891.cn/thread-1820301-1-1.html
shell基礎(chǔ)學(xué)習(xí)第十七篇-條件測(cè)試
http://72891.cn/thread-1820304-1-1.html
shell基礎(chǔ)第十八篇-控制流結(jié)構(gòu)
http://72891.cn/thread-1820329-1-1.html
shell學(xué)習(xí)基礎(chǔ)第十九篇-shell函數(shù)
http://72891.cn/thread-1820454-1-1.html
shell基礎(chǔ)學(xué)習(xí)第二十篇-向腳本傳遞參數(shù)
http://72891.cn/thread-1823335-1-1.html
其它我的筆記都在我的BLOG上,呵呵,有興趣的可以去看看
shell基礎(chǔ)十:sed
sed 用法介紹
s e d是一個(gè)非交互性文本流編輯器。它編輯文件或標(biāo)準(zhǔn)輸入導(dǎo)出的文本拷貝。
" 抽取域。
" 匹配正則表達(dá)式。
" 比較域。
" 增加、附加、替換。
" 基本的s e d命令和一行腳本。
可以在命令行輸入s e d命令,也可以在一個(gè)文件中寫(xiě)入命令,然后調(diào)用s e d,這與a w k基本相同。使用s e d需要記住的一個(gè)重要事實(shí)是,無(wú)論命令是什么, s e d并不與初始化文件打交道,它操作的只是一個(gè)拷貝,然后所有的改動(dòng)如果沒(méi)有重定向到一個(gè)文件,將輸出到屏幕。
因?yàn)閟 e d是一個(gè)非交互性編輯器,必須通過(guò)行號(hào)或正則表達(dá)式指定要改變的文本行。
本文介紹s e d用法和功能。本章大多編寫(xiě)的是一行命令和小腳本。這樣做可以慢慢加深對(duì)s e d用法的了解,取得寶貴的經(jīng)驗(yàn),以便最終自己編出大的復(fù)雜s e d腳本。
和g r e p與a w k一樣, s e d是一種重要的文本過(guò)濾工具,或者使用一行命令或者使用管道與g r e p與a w k相結(jié)合。
1 sed怎樣讀取數(shù)據(jù)
s e d從文件的一個(gè)文本行或從標(biāo)準(zhǔn)輸入的幾種格式中讀取數(shù)據(jù),將之拷貝到一個(gè)編輯緩沖區(qū),然后讀命令行或腳本的第一條命令,并使用這些命令查找模式或定位行號(hào)編輯它。重復(fù)此過(guò)程直到命令結(jié)束。
2 調(diào)用sed
調(diào)用s e d有三種方式:在命令行鍵入命令;將s e d命令插入腳本文件,然后調(diào)用s e d;將s e d命令插入腳本文件,并使s e d腳本可執(zhí)行。
使用s e d命令行格式為:- sed [選項(xiàng)] s e d命令輸入文件。
復(fù)制代碼 記住在命令行使用s e d命令時(shí),實(shí)際命令要加單引號(hào)。s e d也允許加雙引號(hào)。
使用s e d腳本文件,格式為:- sed [選項(xiàng)] -f sed腳本文件輸入文件
復(fù)制代碼 要使用第一行具有s e d命令解釋器的s e d腳本文件,其格式為:- s e d腳本文件[選項(xiàng)] 輸入文件
復(fù)制代碼 不管是使用s h e l l命令行方式或腳本文件方式,如果沒(méi)有指定輸入文件, s e d從標(biāo)準(zhǔn)輸入中接受輸入,一般是鍵盤或重定向結(jié)果。
s e d選項(xiàng)如下:
n 不打印;s e d不寫(xiě)編輯行到標(biāo)準(zhǔn)輸出,缺省為打印所有行(編輯和未編輯)。p命令可以用來(lái)打印編輯行。
c 下一命令是編輯命令。使用多項(xiàng)編輯時(shí)加入此選項(xiàng)。如果只用到一條s e d命令,此選項(xiàng)無(wú)用,但指定它也沒(méi)有關(guān)系。
f 如果正在調(diào)用s e d腳本文件,使用此選項(xiàng)。此選項(xiàng)通知s e d一個(gè)腳本文件支持所有的s e d命令,例如:sed -f myscript.sed input_file,這里m y s c r i p t . s e d即為支持s e d命令的文件。
2.1 保存sed輸出
由于不接觸初始化文件,如果想要保存改動(dòng)內(nèi)容,簡(jiǎn)單地將所有輸出重定向到一個(gè)文件即可。下面的例子重定向s e d命令的所有輸出至文件‘ m y o u t f i l e’,當(dāng)對(duì)結(jié)果很滿意時(shí)使用這種方法。- $sed 'some-sed-commands' input-file > myoutfile
復(fù)制代碼 2.2 使用sed在文件中查詢文本的方式
s e d瀏覽輸入文件時(shí),缺省從第一行開(kāi)始,有兩種方式定位文本:
1) 使用行號(hào),可以是一個(gè)簡(jiǎn)單數(shù)字,或是一個(gè)行號(hào)范圍。
2 ) 使用正則表達(dá)式
下面是使用s e d定位文本的一些方式。- x x為一行號(hào),如1
- x , y 表示行號(hào)范圍從x到y(tǒng),如2,5表示從第2行到第5行
- / p a t t e r n / 查詢包含模式的行。例如/ d i s k /或/[a-z]/
- / p a t t e r n / p a t t e r n / 查詢包含兩個(gè)模式的行。例如/ d i s k / d i s k s /
- p a t t e r n / , x 在給定行號(hào)上查詢包含模式的行。如/ r i b b o n / , 3
- x , / p a t t e r n / 通過(guò)行號(hào)和模式查詢匹配行。3 . / v d u /
- x , y ! 查詢不包含指定行號(hào)x和y的行。1 , 2 !
復(fù)制代碼 2.3 基本sed編輯命令- sed編輯命令
- p 打印匹配行
- = 顯示文件行號(hào)
- a \ 在定位行號(hào)后附加新文本信息
- i \ 在定位行號(hào)后插入新文本信息
- d 刪除定位行
- c \ 用新文本替換定位文本
- s 使用替換模式替換相應(yīng)模式
- r 從另一個(gè)文件中讀文本
- w 寫(xiě)文本到一個(gè)文件
- q 第一個(gè)模式匹配完成后推出或立即推出
- l 顯示與八進(jìn)制A S C I I代碼等價(jià)的控制字符
- { } 在定位行執(zhí)行的命令組
- n 從另一個(gè)文件中讀文本下一行,并附加在下一行
- g 將模式2粘貼到/pattern n/
- y 傳送字符
- n 延續(xù)到下一輸入行;允許跨行的模式匹配語(yǔ)句
復(fù)制代碼 sed和正則表達(dá)式
s e d識(shí)別任何基本正則表達(dá)式和模式及其行匹配規(guī)則。記住規(guī)則之一是:如果要定位一特殊字符,必須使用( \)屏蔽其特殊含義
[ 本帖最后由 mocou 于 2005-11-18 14:40 編輯 ] |
|