文本處理工具之sed

                     文本處理工具之sed

 、sed的簡介

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

   3、sed所具有的功能:數據的替換、刪除、新增等。sed處理的數據可能是一些關鍵字、也可能會是一些特定的行。sed對文本有著強大的處理功能,下面我們來一一介紹。

sed的基礎使用

   1、sed的語法結構

     sed [OPTION]… {script} [input-file].. [actions]

   2、選項[OPTION]
     -r: 支持拓展正則表達式

     -n:靜默模式

     -e:指定多腳本運行

     -f /path/to/scripts_file:從指定文件中讀取腳本運行

     -i:直接修改源文件

   3、script腳本 :‘地址命令’

     1)地址界定

      1)不給地址:對全文進行處理

      2)單地址:
        #:指定的行   
        /pattern/:被此處模式所能夠匹配到的每一行

      3)地址范圍:
        #1,#2:表示從第#1行到#2行
        #,+n:表示從第#行開始,一直到向下的n行
        /pat1/,/pat2/:表示從第一次被模式/part1/所匹配的行開始,到第一次被模式/part2/匹配的行結束,中間所有的行
        #,/pat1/:表示從#行開始到第一次被模式/part1/匹配的行結束,中間所有的行

      (4) ~:步進 如下:
        1~2 奇數行
        2~2 偶數行

     2)sed編輯命令

        d: 刪除模式空間匹配的行
        p: 顯示模式空間中的內容
        a [\]text:在指定行后面追加文本支持使用\n實現多行追加
        i [\]text:在行前面插入文本
        c [\]text:替換行為單行或多行文本
        w /path/somefile: 保存模式匹配的行至指定文件
        r /path/somefile:讀取指定文件的文本至模式空間中匹配到的行后
        =: 為模式空間中的行打印行號
        !:模式空間中匹配行取反處理

     3)查找替換:

        s/part1/string/[OPTIONS]:將part1匹配到內容替換為string,根據選項進行處理。其中OPTIONS可以不加。

        其分界符可為:s###、s@@@

        常用OPTIONS:

          g:全局的

          i:不區分大小寫

          w /PATH/TO/SOMEFILE:把指定內容另存至指定的文件中

          r /PATH/TO/SOMEFILE:在文件指定位置插入另一個文件的內容。

          p:顯示替換成功的行

   4、sed命令使用示例:

        1)刪除/etc/fstab文件中行首為#的#字符

                                    文本處理工具之sed

                                    文本處理工具之sed

        2)將/etc/fstab文件中的奇數行另存至/tmp/fstab1

                                    文本處理工具之sed

         (3)利用sed命令取出一路徑的基名和路徑名

                                   文本處理工具之sed

、sed一些高級使用

1、sed除了由‘模式空間’,還有一個‘保持空間’

  sed的工作機制是每次讀取一行至模式空間中,在模式空間中完成處理,將處理結果輸出值標準輸出設備。在模式空間中處理一行內容后繼續處理下一行,那么對于處理過的行可能還有其它的處理,因此可以先把處理過的行‘傳輸’至保持空間中,然后在后續的處理中再次‘傳輸’至模式空間中進行再次處理。

2、sed工具支持一些高級命令運用到保持空間中。

    h: 把模式空間中的內容覆蓋至保持空間中
    H:把模式空間中的內容追加至保持空間中
    g: 從保持空間取出數據覆蓋至模式空間
    G:從保持空間取出內容追加至模式空間
    x: 把模式空間中的內容與保持空間中的內容進行互換
    n: 讀取匹配到的行的下一行覆蓋至模式空間
    N:讀取匹配到的行的下一行追加至模式空間
    d: 刪除模式空間中的行
    D:刪除當前模式空間開端至\n的內容( 不再傳至標準輸出),放棄之后的命令,但是對剩余模式空間重新執行sed

3、sed高級使用一些示例

   1)統計centos安裝光盤中Package目錄下的所有rpm文件的以.分隔倒數第二個字段的重復次數

                 文本處理工具之sed

   (2統計/etc/issue文件中每個單詞的出現次數,并排序

      文本處理工具之sed
   (3將數字1到10 以’NN+1’形式輸出,其中N為奇數,N+1為偶數

      文本處理工具之sed

     

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

(0)
zqzq
上一篇 2017-05-01
下一篇 2017-05-01

相關推薦

  • linux三劍客之grep

    linux三劍客之grep        所謂三劍客的工具有“grep”、“sed” 、“awk”,他們都是不謀而合的文本搜索查找處理的強大工具。grep 是 Ken Thompson 寫的,他也是 Unix 的創造者。 gerp及正則表達式    grep全稱(GLobal search Regu…

    Linux干貨 2016-08-08
  • 計算機基礎及Linux基礎

    計算機基礎與Linux入門 計算機組成及功能 Linux常見發行版 Linux重要哲學思想 Linux文件系統層級結構及文件命名規則 如何獲取Linux命令的使用幫助 Linux常用命令及示例 1.1 計算機組成及功能 1.1.1 計算機的五大部件 計算機的主要組成部分有: 1、CPU:運算器 2、控制器、寄存器(內部存儲)、緩存; 3、存儲器:內存,RAM…

    Linux干貨 2016-12-04
  • Linux 第四天: (07月28日) 練習和作業

    Linux 第四天: (07月28日) 練習和作業         定義別名命令baketc, 每天將/etc/目錄下所有文件, 備份到/testdir獨立的子目錄下, 并要求子目錄格式為backupYYYY-mm-dd, 備份過程可見 alias baketc='cp -a /etc/ /testdir/b…

    Linux干貨 2016-08-08
  • 誰說C語言很簡單?

    前兩天,Neo寫了一篇《語言的歧義》其使用C語言討論了一些語言的歧義。大家應該也順便了解了一下C語言中的很多不可思異的東西,可能也是你從未注意到的東西。 是的,C語言并不簡單,讓我們來看看下面這些示例: 為什么下面的代碼會返回0?(這題應該很簡單吧) int x;   return x == (1&…

    Linux干貨 2016-03-20
  • FHS文件系統以及各目錄功能

    FHS:Filesystem Hierarchy Standard(文件系統目錄標準)的縮寫,多數Linux版本采用這種文件組織形式,類似于Windows操作系統中c盤的文件目錄,FHS采用樹形結構組織文件。FHS定義了系統中每個區域的用途、所需要的最小構成的文件和目錄,同時還給出了例外處理與矛盾處理,規范在根目錄(/)下面各個主要目錄應該放什么樣的文件。 …

    Linux干貨 2016-10-17
欧美性久久久久