shell學習之sed操作 原

比起用交互的文本編輯,還有很多命令可以用。比如sed爲流編輯器(Stream Edit),一個流字,這個逼格就上去了。

sed是一種在線編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩衝區中,稱爲“模式空間”(pattern space),接着用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕。接着處理下一行,這樣不斷重複,直到文件末尾。文件內容並沒有改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反覆操作;編寫轉換程序等。

sed編輯器只需對數據流進行一遍處理就可以完成編輯操作。使得sed編輯器要比交互式編輯器快得多,你可以快速完成對數據的自動修改。

可以看到流編輯器會在編輯器處理數據之前基於預先提供的一組規則來編輯數據流。

sed命令的格式如下:

還有參數和動作說明,我在菜鳥教程那截圖一張

默認情況下,sed編輯器會將指定的命令應用到STDIN輸入流上。這樣你可以直接將數據通 過管道輸入sed編輯器處理。

echo "this is the world" | sed 's/world/big world/' 

輸出:this is the big world

如果後面接的文件,那麼操作的就是文件內每行的數據,比如:sed 's/world/big world/'  testfile 會輸出,但是文件內容是不會改的。

要在sed命令行上執行多個命令時,只要用-e選項就可以了。

比如:sed 's/world/big world/ ;s/this/that/' testfile

兩個命令都作用到文件中的每行數據上。命令之間必須用分號隔開,並且在命令末尾和分號之間不能有空格。

如果有大量要處理的sed命令,那麼將它們放進一個單獨的文件中通常會更方便一些。 可以在sed命令中用-f選項來指定文件。

sed -f script1 testfile

來看看增刪改

陷在testfile文件中加入幾行數據

刪除某幾行 sed '2,5d' testfile 

增加某幾行數據,sed '2a hello xin' testfile

替換行,sed '2,5c I am cool!' testfile 

也可以用來查詢sed '/dog/p'  testfile ,當然我還是比較喜歡grep

參考:https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html

https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html

 

 

 

 

 

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