linux三劍客之sed命令

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章