1、定義
sed全稱是:stream editor 流編輯器
對文件的操作無非就是”增刪改查“,**sed命令就是實現對文件的”增刪改查“。**
**man sed//man 的解釋**
用于過濾和轉換文本的流編輯器
2、功能
Sed 主要用來自動編輯一個或多個文件、簡化對文件的反復操作、編寫轉換程序等。
sed 默認不會直接修改源文件數據,而是會將數據復制到緩沖區中,修改也僅限于緩沖區中的數據。
3、sed與vi的區別
vi 采用的是交互式文本編輯模式,你可以用鍵盤命令來交互性地插入、刪除或替換數據中的文本。
sed 采用的是流編輯模式(非交互式編輯器),最明顯的特點是,在 sed 處理數據之前,需要預先提供一組規則,sed 會按照此規則來編輯數據。
4、sed工作原理
(1)sed 會一次處理一行內容。
(2)處理時,把當前處理的行存儲在臨時緩沖區中,成為"模式空間",接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。
(3)文件內容并沒有改變,除非你使用重定向存儲輸出。
5、語法
sed [-hnV] [ -e<script>] [-f<script文件>] [文本文件]
sed [選項] [腳本命令] 文件名
選項部分,常見選項包括 -n,-e,-i,-f,-r選項。
(1)-e 如果需要用sed對文本內容進行多種操作,則需要執行多條子命令來進行操作。
(2)-f 指定sed腳本的文件名
如果命令操作比較多的時候就會比較麻煩,這時候把多個子命令操作寫入腳本文件,然后使用 -f 選項來指定該腳本
(3)-n 取消默認的輸出
默認情況下,sed 會在所有的腳本指定執行完畢后,會自動輸出處理后的內容,而該選項會屏蔽自動輸出,需使用 print 命令來完成輸出。
(4)-i 此選項會直接修改源文件,要慎用。
腳本命令,常見包括: 增a 刪d 改s(替換) 插入i 打印p 取代c
(1)a :新增, a 的后面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
(2)c :取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行!
(3)d :刪除,因為是刪除啊,所以 d 后面通常不接任何內容;
(4)i :插入, i 的后面可以接字串,而這些字串會在新的一行出現(目前的上一行);
(5)p :打印,亦即將某個選擇的數據印出。通常 p 會與參數 sed -n 一起運行~只輸出被替換命令修改過的行
(6)s :取代,可以直接進行取代的工作. s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 就是啦!
6、示例及說明
本節知識:
實操:
(1)查找并替換每行第一個“hello”為“你好”:sed 's/hello/你好/' 1.txt
(2)查找替換每行中所有“hello”為“你好”:sed 's/hello/你好/g' 1.txt
(3)刪除含有“hello”的行:sed '/hello/d' 1.txt
(4)刪除第2行:sed '2d' 1.txt
(5)刪除最后一行:sed ‘$d’ 1.txt
(6)刪除第2行到最后一行:sed ‘2,$d’ 1.txt