sed使用方法

  sed編輯器被稱作流編輯器(stream editor)。流編輯器在處理數據之前基于預先提供的一組規則來編輯數據流。

一、命令格式

  sed options '"地址""編輯命令"' file

  常用選項:

    -n:靜默模式,不顯示模式內容空間中的內容;

    -r:支持使用擴展正則表達式;

    -i:修改原文件;

    -e:執行多個命令;

    -f file:將file中指定的命令添加到運行的命令中;

  常用編輯命令: 

    p:打??;

    s:文本替換;

    d:刪除;

    i text:行上方插入,text即為插入的內容;

    a test:行下方插入,使用\n插入多行內容;

    c:修改行內容;

    r path/from/file:在指定位置合并兩個文件;

    w path/to/somefile:把符合條件的行保存至指定的文件中;

二、應用實例

  1、替換文本

1.jpg

    上例中將/etc/issue文件中的字符“e”替換為數據“8”,但其結果只替換了每行的第一個匹配字符,可以使用替換標記來完成替換所有匹配字符的工作。

    1.1 替換標記

     格式:s/pattern/replacement/flags

      替換標記(flags):

       數字:表明新文本將替換第幾處模式匹配的地方;

       g:表明新文體將替換所有模式匹配的地方;

       p:原來行的內容要打印出來;

       w file:將替換結果寫到文件中。

     替換第二個匹配的內容:

5.jpg

     替換所有匹配的內容:

2.jpg

     只顯示被替換過內容的行,通常與-n選項一起使用:

3.jpg

     將替換的內容輸出到文件中:

4.jpg

     1.2 字符串分隔符

      在使用進行替換操作時,通常我們習慣使用"/"符號作為分隔符,如查"/"符號需要在模式中用到的話則需在使用"\"來進行轉義,如下所示:

       sed 's/\/tmp/\/dev' /tmp/test

      上面的表達式看起來不容易閱讀,可以通過修改字符串分隔符來解決此問題:

       sed 's%/tmp%/dev' /tmp/test

      上面的表達式使用"%"來作為字符串分隔符,依然可以達到替換效果。

      注:字符串分隔符可以使用任意字符來替換。

    2、地址

     sed編輯器中可以使用指定地址的方式來過濾想要進行操作的作。

     兩種行尋址的形式:

      1、行的數字范圍

      2、文本模式過濾

     格式:[address]command

     2.1 數字方式

6.jpg

     上例中只是在s命令前添加地址3,作用是將第3行的“:”全部替換為“,”。

7.jpg

     上例中指定了一個地址范圍3到5行。

8.jpg

     上例中使用了"$"符號,表示將第3行至最后一行的所有“:”全部替換成為“,”。

    2.2 文本模式

     格式:/pattern/command

     模式必須使用"/"括起來。

9.jpg

     上例中只替換了有Kernel存在的行。

    2.3 多命令

     sed編輯器還支持多個命令同時執行。

10.jpg

     上例中對于有Kernel的行同時進行了兩個地方的替換。

 3、刪除

   刪除命令d會將文本中的內容真的刪除掉,只是在sed編輯器輸出時會被刪除掉。

11.jpg

  4、插入和追加文本

   插入命令i會在指定行的行前增加一個新行;

   追加命令a會在指定行的行后增加一個新行。

   格式:[地址]a/i 插入的內容

12.jpg

13.jpg

  5、修改行

   工作機制與插入和追加相同,格式也一樣。

14.jpg

    將/etc/issue文件的第一行修改為指定內容。

  6、將替換結果寫到文件

   格式:[address]w filename

15.jpg

  7、從文件中讀取數據

   格式:[address]r filename

16.jpg

    將test文件中的內容插入到/etc/issue文件中。

  8、常用選項實例

17.jpg

    使用-e選項同時執行多個命令。

18.jpg

    使用文件中的命令來執行替換操作。

原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/10590

(0)
petmasterpetmaster
上一篇 2015-12-28 15:25
下一篇 2015-12-31 16:27

相關推薦

  • 硬鏈接與軟鏈接的區別

    硬鏈接與軟連接                本文僅用于個人學習參考:         簡單介紹了硬鏈接與軟連接的區別。  &nb…

    Linux干貨 2016-10-20
  • DNS and BIND

    DNS and BIND 名稱解析:把一種代號轉換成為另一種代號的功能是應用程序基于某個搜索鍵在指定的數據庫查詢,查詢到對應的鍵以后,對應鍵被找出來的過程!passwd —《nsswith》/etc/nsswith.conf 注意:查詢的時候用到的是UDP的53,主從復制走的是tcp(但是也用到udp) DNS: Domain Name Serv…

    Linux干貨 2016-10-21
  • 第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。       首先用who命令列出當前系統上所有登陸用戶,然后使用cut命令以空格為分隔符取出第一列,再使用sort排序并去除重復的行        …

    Linux干貨 2017-01-18
  • linux下正則表達式的學習

    linux 下正則表達式用法總結 正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。簡單的說,正則表示式就是處理字符串的方法。常用來匹配字符的元字符總結如下: Paste_Image.png 有了以上這些元字符原則上可以搜索出任務想要表達的字符,可為了更靈活使用,往往還要搭配一些次數匹配的用法 Paste_Image.png 例如:a&nbsp…

    Linux干貨 2017-06-04
  • day6作業

    1、創建用戶gentoo,附加組為bin和root,默認shell為 /bin/csh,注釋信息為"Gentoo Distribution"     2、創建下面的用戶、組和組成員關系 名字為admins 的組 用戶natasha,使用admins …

    系統運維 2016-08-08
  • 推薦-虛擬化網絡之OpenvSwitch(二)

    上一篇介紹了openvswitch的基礎知識,接下來我們來做一個實驗,利用GRE通道搭建一個跨多宿主機的虛擬化網絡,深入了解openvswitch的功能。 一、實驗拓撲 ip地址分配:  A1:192.168.10.1/24  A2:192.168.10.10/24   B1:192.168.10.2/24 &nbsp…

    2016-03-27
欧美性久久久久