您好,登錄后才能下訂單哦!
sed簡(jiǎn)介:
sed是一個(gè)強(qiáng)大而簡(jiǎn)單的文本解析轉(zhuǎn)換工具,可以讀取文本,并根據(jù)指定的條件對(duì)文本內(nèi)容進(jìn)行編輯(刪除、替換、添加、移動(dòng)等),最后輸出所有行或者僅輸出處理的某些行。sed 也可以在無交互的情況下實(shí)現(xiàn)相當(dāng)復(fù)雜的文本處理操作,被廣泛應(yīng)用于 Shell 腳本中,用以完成各種自動(dòng)化處理任務(wù)。
sed工作流程:
讀取:sed 從輸入流(文件、管道、標(biāo)準(zhǔn)輸入)中讀取一行內(nèi)容并存儲(chǔ)到臨時(shí)的緩沖區(qū)中(又稱模式空間,pattern space)。
執(zhí)行:默認(rèn)情況下,所有的 sed 命令都在模式空間中順序地執(zhí)行,除非指定了行的地址,否則 sed 命令將會(huì)在所有的行上依次行。
顯示:發(fā)送修改后的內(nèi)容到輸出流。再發(fā)送數(shù)據(jù)后,模式空間將會(huì)被清空。
sed命令格式:
sed [選項(xiàng)] '操作' 參數(shù)
常見的 sed 命令選項(xiàng):
-e 或--expression=:表示用指定命令或者腳本來處理輸入的文本文件。
-f 或--file=:表示用指定的腳本文件來處理輸入的文本文件。
-h 或--help:顯示幫助。
-n、--quiet 或 silent:表示僅顯示處理后的結(jié)果。
-i:直接編輯文本文件。
常見的操作:
a:增加,在當(dāng)前行下面增加一行指定內(nèi)容。
c:替換,將選定行替換為指定內(nèi)容。
d:刪除,刪除選定的行。
i:插入,在選定行上面插入一行指定內(nèi)容。
p:打印,如果同時(shí)指定行,表示打印指定行;如果不指定行,則表示打印所有內(nèi)容;如果有非打印字符,則以 ASCII 碼輸出。其通常與“-n”選項(xiàng)一起使用。
s:替換,替換指定字符。
y:字符轉(zhuǎn)換。
1)、輸出符合條件的文本(p )
sed -n 'p' test1.txt //輸出所有內(nèi)容,等同于 cat test1.txt
sed -n '3,5p' test1.txt //輸出 3~5 行
sed -n 'p;n' test1.txt //輸出所有奇數(shù)行,n 表示讀入下一行資料
sed -n 'n;p' test1.txt //輸出所有偶數(shù)行,n 表示讀入下一行資料
sed -n '1,5{n;p}' test1.txt //輸出第 1~5 行之間的偶數(shù)行(第 2/4/6 行)
sed -n '/the/p' test.txt //輸出包含the 的行
sed -n '4,/the/p' test.txt //輸出從第 4 行至第一個(gè)包含 the 的行
sed -n '/the/=' test.txt //輸出包含the 的行所在的行號(hào),等號(hào)(=)用來輸出行號(hào)
sed -n '/\<wood\>/p' test.txt //輸出包含單詞wood 的行,\<、\>代表單詞邊界
2)、刪除符合條件的文本(d)
nl test1.txt | sed '3,5d' //刪除第 3~5 行
nl test.txt |sed '/cross/d' //刪除包含cross 的行
sed '/^[a-z]/d' test.txt //刪除以小寫字母開頭的行
sed '/.$/d' test.txt //刪除以"."結(jié)尾的行
3)替換符合條件的文本
sed 's/the/THE/' test1.txt //將每行中的第一個(gè)the 替換為 THE
sed 's/l/L/2' test1.txt //將每行中的第 2 個(gè)l 替換為L(zhǎng)
sed 's/the/THE/g' test1.txt //將文件中的所有the 替換為THE
sed 's/^/#/' test1.txt //在每行行首插入#號(hào)
sed '/the/s/^/?/' test1.txt //在包含the 的每行行首插入?號(hào)
sed 's/$/EOF/' test1.txt //在每行行尾插入字符串EOF
4)遷移符合條件的文本
sed '/the/{H;d};$G' test1.txt //將包含the 的行遷移至文件末尾
sed '1,5{H;d};13G' test1.txt //將第 1~5 行內(nèi)容轉(zhuǎn)移至第13行后
sed '3aNew' test1.txt //在第 3 行后插入一個(gè)新行,內(nèi)容為 New
sed '/the/aNew' test1.txt //在包含the 的每行后插入一個(gè)新行,內(nèi)容為 New
sed '3aNew1\nNew2' test1.txt //在第 3 行后插入多行內(nèi)容,中間的\n 表示換行
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。