sed命令

sed(stream editor)是流編輯器。

Sed軟件有兩個內置的存儲空間:

  • 模式空間(pattern space):是sed軟件從文本讀取一行文本然後存入的緩衝區(這個緩衝區是在內存中的),然後使用sed命令操作模式空間的內容。
  • 保持空間(hold space):是sed軟件另外一個緩衝區,用來存放臨時數據,也是在內存中,但是模式空間和保持空間的用途是不一樣的。Sed可以交換保持空間和模式空間的數據,但是不能在保持空間上執行普通的sed命令,也就是說我們可以在保持空間存儲數據。

調用sed命令有兩種方式

  • sed [options] '[Address]command' file(s)
  • sed [options] -f scriptfile file(s)

選項

  • -e command,--expression=command允許多臺編輯。
  • -h,--help打印幫助,並顯示bug列表的地址。
  • -n,--quiet,--silent取消默認輸出。
  • -f,--filer=script-file引導sed腳本文件名。
  • -V,--version打印版本和版權信息。
  • -i,改變文件執行的結果(sed默認是不改變文件)
  • -r,擴展正則表達

Address:

1、Startline,Endline

  • 比如1,100
  • $:最後一行

2、/RegExp/

  • /^root/

3、/pattern1/,/pattern2/

  • 第一次被pattern1匹配到的行開始,至第一次被 pattern2匹配到的行結束,這中間的所有行

4、LineNumber

  • 指定的行

5、Startline,+N

  • 從Startlin開始,向後的N行

COMMAND:

  • d 刪除符合條件的行
  • p 打印符合條件的行
  • a \String:在指定的行後面追加新行
  • \n:可以用於換行
  • i \String:在指定的行前面追加新行
  • r file:將指定的文件的內容添加至符合條件的行處
  • #將文件word讀進來,放在匹配到abc行的後面
  • w file:將地址指定的範圍內的行另存至指定的文件中
  • #會覆蓋原有文件內容
  • s///:查找的並替換,默認只替換每行中第一交被匹配到的字符串
  • s/pattern/string/修飾符:查找的並替換,默認只替換每行中第一交被匹配到的字符串
    \(\),\1,\2 後向引用
  • s///g 全局替換,i 忽略字符大小寫

元字符集

  • ^行首錨定
  • 打印第一個字母是a的行,-n表示取消默認輸出
  • $行尾鎖定
  • 打印以字母a結尾的行
  • .匹配一個非換行符的字符
  • *匹配前面的表達式零次或多次
  • +匹配前面的子表達式一次或多次
  • ?匹配前面的子表達式一次或零次
  • []匹配一個指定範圍內的字符
  • [^]匹配一個不在指定範圍內的字符
  • \(..\)保存匹配的字符
  • &;保存搜索字符用來替換其他字符
  • \<或\b:其後面的任意字符必須作爲單詞首部出現,例:/\<love/
  • \>或\b:其後面的任意字符必須作爲單詞尾部出現,例:/love\>/
  • x\{m\}重複字符x,m次,如:/0\{5\}/匹配包含5個o的行。

     

  • x\{m,\}重複字符x,至少m次,如:/o\{5,\}/匹配至少有5個o的行。

     

  • x\{m,n\}重複字符x,至少m次,不多於n次,如:/o\{5,10\}/匹配5--10個o的行。

  • \w,匹配字母下劃線數字
  • \W匹配非字母下劃線數字

其它示例

1、取出當前路徑的上級目錄

2、給每個單詞加上[]

3、將aaa BBB順序更換

發佈了38 篇原創文章 · 獲贊 14 · 訪問量 6400
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章