1.概念
sed是一種在線編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩衝區中,稱爲“模式空間”(pattern space),接着用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕。接着處理下一行,這樣不斷重複,直到文件末尾。文件內容並沒有 改變,除非你使用重定向存儲輸出。sed主要用來自動編輯一個或多個文件,簡化對文件的反覆操作,編寫轉換程序等。
2.用法
sed [選項]... {腳本(如果沒有其他腳本)} [輸入文件]...
3.選項與參數
1)-i,直接修改讀取的文件內容,而不是輸出到終端;
2)-n,使用安靜(silent)模式。在一般sed的用法中,所有來自STDIN的數據一般都會被列出到終端上。但如果加上-n參數後,則只有經過sed 特殊處理的那一行(或者動作)纔會被列出來;
3) -e,直接在命令列模式上進行sed的動作編輯;
4)-f,直接將sed的動作寫在一個文件內,-f filename則可以運行filename內的sed動作;
5)-r,sed的動作支持的是延伸型正規表示法的語法。(默認是基礎正規表示法語法)
4.處理格式
1)a,新增行
eg:在文件第2行的下一行添加"pineapple"字符串
cat test.txt
apple,banana
watermelon,pear
orange,grape
-----------------------------------------------------------------------
cat test.txt | sed "2apineapple"
apple,banana
watermelon,pear
pineapple
orange,grape
2)i:插入行
eg:在文件中的第二行的上一行插入數據
cat test.txt
apple,banana
watermelon,pear
orange,grape
-----------------------------------------------------------------------
cat test.txt | sed "2i pear"
apple,banana
pear
watermelon,pear
orange,grape
3)d,刪除行
eg:刪除文件中的第二行
cat test.txt
apple,banana
watermelon,pear
orange,grape
-----------------------------------------------------------------------
cat test.txt | sed "2d"
apple,banana
orange,grape
eg:刪除文件中的第二行到第三行
cat test.txt
apple,banana
watermelon,pear
orange,grape
-----------------------------------------------------------------------
cat test.txt | sed "2,3d"
apple,banana
4)c,取代行
eg:取代文件中的第二行內容
cat test.txt
apple,banana
watermelon,pear
orange,grape
-----------------------------------------------------------------------
cat test.txt | sed "2c pear"
apple,banana
pear
orange,grape
5)s,取代字符串
eg:替換文件中的"apple"字符串爲"mango"字符串
cat test.txt
mango,banana
watermelon,pear
orange,grape
-----------------------------------------------------------------------
cat test.txt | sed "s/apple/mango/"
mango,banana
watermelon,pear
orange,grape
6)p,打印行,通常會與-n一起使用
eg:將文件中的第二行到第三行內容打印出來
cat test.txt
mango,banana
watermelon,pear
orange,grape
-----------------------------------------------------------------------
cat test.txt | sed -n "2,3p"
watermelon,pear
orange,grape