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
下一篇 2015-12-31

相關推薦

  • 9 grep & egrep & 正則表達式

    grep grep = Global search REgular expression and Print out the line 語法及用途 grep [OPTIONS] PATTERN [FILE…] 根據用戶指定的“…

    Linux干貨 2016-08-10
  • Linux的文本處理工具及grep正則表達式的使用

    文本處理工具及grep正則表達式的使用 本章節學習的內容: 1、各種文本工具來查看、分析、統計文本文件 2、grep正則表達式 3、擴展正則表達式 一、抽取文本的工具: 1、按文件內容:less和cat 2、按文件截取:head和tail 3、按列抽?。篶ut 4、按關鍵字抽取:grep 二、文件查看命令:cat, tac,rev 1、命令cat: (1)文…

    Linux干貨 2016-08-05
  • 自建回收站

    linux 自添加回收站 (1)建立一個回收站目錄 mkdir /tmp/trash_tmp (2) 編輯一個文件 vi /bin/trash mv $@ /tmp/trash_tmp :wq 保存退出 (3)添加別名 alias rm=/bin/trash (4)編輯/etc/bashrc 在最后一行添加alias rm=/bin/trash (5)給予目…

    Linux干貨 2017-09-04
  • LNMP (nginx+php-fpm)

    Nginx簡明: 特性: 采用模塊化設計,較好的擴展性;高可靠性 ?master/worker支持熱部署:不停機更新配置文件、更換日志文件、列新服務器版本低內存消耗:10000個keep-alive連接模式下的非活動連接僅消耗2.5M內存;event-dreiven,aio,mmap基本功能;靜態資源的web服務器http協議反向代理服務器;pop3/ima…

    2017-06-28
  • Centos7上利用corosync+pacemaker+crmsh構建高可用集群

    一、高可用集群框架 資源類型:     primitive(native):表示主資源     group:表示組資源,組資源里包含多個主資源     clone:表示克隆資源     master/…

    Linux干貨 2016-05-29
  • Shell腳本編程中的變量

    一、什么是變量?   變量來源于數學,是計算機語言中能儲存計算結果或能表示值抽象概念。變量可以通過變量名訪問 二、變量的種類有哪些? 本地變量 生效范圍為當前shell進程;對當前shell之外的其它shell進程,包括當前shell的子shell進程均無效 環境變量 生效范圍為當前shell進程及其子進程 局部變量 生效范圍為當前shell進程中…

    Linux干貨 2016-08-13
欧美性久久久久