1. 程式人生 > 實用技巧 >Linux中sed命令

Linux中sed命令

sed 可以將資料進行取代、刪除、新增、擷取

sed命令列格式為:

 sed [-nefri]  ‘常用命令’  檔案

常用選項:
-n∶取消預設的輸出,使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN的資料一般都會被列出到螢幕上。但如果加上 -n 引數後,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來
-e∶進行多項編輯,即對輸入行應用多條sed命令時使用. 直接在指令列模式上進行 sed 的動作編輯
-f∶指定sed指令碼的檔名. 直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行 filename 內的sed 動作
-r∶sed 的動作支援的是延伸型正則表示式的語法。(預設是基礎正則表示式語法)
-i∶直接修改讀取的檔案內容,而不是由螢幕輸出

常用命令 '[n1][,n2] function':

[n1[,n2]] function
n1、n2:不一定會存在,一般表示選擇進行操作的行數,比如4a\addsomething就是第四行之後新增addsomething,'2,5d'就是刪除第二行到第五行


a ∶ 新增,新增在當前行後; a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)

新增多行:
[root@www ~]# nl /etc/passwd | sed '2a Drink tea or ......\ > drink beer ?'

c ∶ 取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行
d ∶ 刪除,因為是刪除,所以 d 後面通常不接任何內容;sed '3,$d'→刪除第三行到最後一行

i ∶ 插入,插入在當前行前; i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行)
p∶ 列印,亦即將某個選擇的資料印出。通常 p 會與引數 sed -n 一起用
s∶ 取代,可以直接進行替換的工作。通常這個 s 的動作可以搭配正則表示式。例如 1,20s/old/new/g(就是檔案內容的old取代new)

(正則表示式參考https://blog.csdn.net/sgnoquiter/article/details/8017750

參考:

https://www.runoob.com/linux/linux-comm-sed.html

https://blog.csdn.net/u013080248/article/details/19652589

https://www.cnblogs.com/pekkle/p/6568805.html