sed是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達(dá)式使用,功能不同凡響。處理時(shí),把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩沖區(qū)中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕。接著處理下一行,這樣不斷重復(fù),直到文件末尾。文件內(nèi)容并沒有 改變,除非你使用重定向存儲(chǔ)輸出。Sed主要用來自動(dòng)編輯一個(gè)或多個(gè)文件;簡(jiǎn)化對(duì)文件的反復(fù)操作;編寫轉(zhuǎn)換程序等。
公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出湘橋免費(fèi)做網(wǎng)站回饋大家。
sed的選項(xiàng)、命令、替換標(biāo)記
命令格式 sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
選項(xiàng):
-e<script>:以選項(xiàng)中的指定的script來處理輸入的文本文件
-f<script>:以選項(xiàng)中指定的script文件來處理輸入的文本文件
-h:顯示幫助
-n或--quiet: 讀取下一行到 pattern space
-v:顯示版本信息
sed命令:
-r:匹配目錄
a\ 在當(dāng)前行下面插入文本。
i\ 在當(dāng)前行上面插入文本。
c\ 把選定的行改為新的文本。
d 刪除,刪除選擇的行。
D 刪除模板塊的第一行。
s 替換指定字符 h 拷貝模板塊的內(nèi)容到內(nèi)存中的緩沖區(qū)。
H 追加模板塊的內(nèi)容到內(nèi)存中的緩沖區(qū)。
g 獲得內(nèi)存緩沖區(qū)的內(nèi)容,并替代當(dāng)前模板塊中的文本。
G 獲得內(nèi)存緩沖區(qū)的內(nèi)容,并追加到當(dāng)前模板塊文本的后面。
l 列表不能打印字符的清單。
n 讀取下一個(gè)輸入行,用下一個(gè)命令處理新的行而不是用第一個(gè)命令。
N 追加下一個(gè)輸入行到模板塊后面并在二者間嵌入一個(gè)新行,改變當(dāng)前行號(hào)碼。
p 打印模板塊的行。
P(大寫) 打印模板塊的第一行。
q 退出Sed。
b lable 分支到腳本中帶有標(biāo)記的地方,如果分支不存在則分支到腳本的末尾。
r file 從file中讀行。
t label if分支,從最后一行開始,條件一旦滿足或者T,t命令,將導(dǎo)致分支到帶有標(biāo)號(hào)的命令處,或者到腳本的末尾。
T label 錯(cuò)誤分支,從最后一行開始,一旦發(fā)生錯(cuò)誤或者T,t命令,將導(dǎo)致分支到帶有標(biāo)號(hào)的命令處,或者到腳本的末尾。
w file 寫并追加模板塊到file末尾。
W file 寫并追加模板塊的第一行到file末尾。
! 表示后面的命令對(duì)所有沒有被選定的行發(fā)生作用。
= 打印當(dāng)前行號(hào)碼。
# 把注釋擴(kuò)展到下一個(gè)換行符以前。
sed替換標(biāo)記
g 表示行內(nèi)全面替換。
p 表示打印行。
w 表示把行寫入一個(gè)文件。
x 表示互換模板塊中的文本和緩沖區(qū)中的文本。
y 表示把一個(gè)字符翻譯為另外的字符(但是不用于正則表達(dá)式)
\1 子串匹配標(biāo)記
& 已匹配字符串標(biāo)記
sed元字符集
^ 匹配行開始,如:/^sed/匹配所有以sed開頭的行。
$ 匹配行結(jié)束,如:/sed$/匹配所有以sed結(jié)尾的行。
. 匹配一個(gè)非換行符的任意字符,如:/s.d/匹配s后接一個(gè)任意字符,最后是d。
* 匹配0個(gè)或多個(gè)字符,如:/*sed/匹配所有模板是一個(gè)或多個(gè)空格后緊跟sed的行。
[] 匹配一個(gè)指定范圍內(nèi)的字符,如/[ss]ed/匹配sed和Sed。
[^] 匹配一個(gè)不在指定范圍內(nèi)的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個(gè)字母開頭,緊跟ed的行。
\(..\) 匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替換成lovers。 & 保存搜索字符用來替換其他字符,如s/love/**&**/,love這成**love**。
\< 匹配單詞的開始,如:/\ 匹配單詞的結(jié)束,如/love\>/匹配包含以love結(jié)尾的單詞的行。
x\{m\} 重復(fù)字符x,m次,如:/0\{5\}/匹配包含5個(gè)0的行。
x\{m,\} 重復(fù)字符x,至少m次,如:/0\{5,\}/匹配至少有5個(gè)0的行。
x\{m,n\} 重復(fù)字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10個(gè)0的行。
例1:打印出1.txt的第十行
p 表示打印行
sed -n '10'p 1.txt
不加-n參數(shù)會(huì)打印到10行,第10行在打印一次
sed '10'p 1.txt
例2.打印出1.txt的1-10行
sed -n '1,10'p 1.txt
$ 匹配行結(jié)束
sed -n '30,$' p 1.txt
例4:打印出1.txt中關(guān)于sd的行
sed -n '/sd/'p 1.txt (關(guān)鍵字必須加//符號(hào))
例5.打印出1.txt中匹配一個(gè)(sd)非換行符的任意字符
. 匹配一個(gè)非換行符的任意字符
sed -n '/s.d/'p 1.txt
例6.打印出1.txt中匹配匹配(sd))0個(gè)或多個(gè)字符
* 匹配0個(gè)或多個(gè)字符
sed -n '/s*d/'p 1.txt
例7.打印出1.txt匹配0個(gè)或一個(gè)(sd)字符
sed -n '/s\?d/' 1.txt
例8.打印出1.txt匹配1個(gè)或多個(gè)(sd)字符
sed -n '/s\+d/'p 1.txt
例9.打印出1.txt匹配s|d的寫法
sed -n 's\|d'p 1.txt
例10.打印出1.txt匹配(ss)一對(duì)或多對(duì)的寫法
\(..\) 匹配子串,保存匹配的字符
sed -n '/\(ss\)\+/p'1.txt
注:grep能用的表達(dá)式,sed都可以用
例11.打印出1.txt匹配[a-z]的行
[] 匹配一個(gè)指定范圍內(nèi)的字符
sed -n -r '/[a-z]/'p 1.txt
例11.打印出1.txt匹配[0-9]的行
sed -n -r '/[0-9]/'p 1.txt
例11.打印出1.txt匹配[3,s]的行
寫法1 sed -n -r '/[3,s]/'p 1.txt
寫法2 sed -n -r '/[3\*s]/'p 1.txt
例12.刪除1.txt中的空行
d 刪除,刪除選擇的行。
sed '/^$/'d 1.txt
例13.把1.txt中的1-20行的s替換成w
s 替換指定字符 h 拷貝模板塊的內(nèi)容到內(nèi)存中的緩沖區(qū)
g 獲得內(nèi)存緩沖區(qū)的內(nèi)容,并替代當(dāng)前模板塊中的文本。
sed '1,20s/d/w/g' 1.txt
例14.把2.txt第一段和最后一段互換如何做
sed -r 's#(^[a-z]+)(:.*:)(.*$)#\3\2\1#g' 2.txt (^[a-z]+ +第一段)(:.*:)第二段(.*$)第三段,\3\2\1固定的替換方式
分享標(biāo)題:sed命令詳解和實(shí)例
網(wǎng)站路徑:http://chinadenli.net/article4/gjchoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站收錄、域名注冊(cè)、企業(yè)網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)