文本處理三劍客之sed

文本處理三劍客之sed

一、處理文本的工具sed

概念:

Stream EDitor, 行編輯器 v

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

 

二、sed工具

用法:

    sed [option]… 'script' inputfile… v

常用選項:

        -n:不輸出模式空間內容的自動打印

        -e: 多點編輯

        -f /PATH/TO/SCRIPT_FILE: 從指定文件中讀取編輯腳本

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

        -i: 原處編輯 v

script:

      '地址命令'

 地址定界:

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

     (2) 單地址:

                #: 指定的行

                /pattern/:被此處模式所能夠匹配到的每一行   

     (3) 地址范圍:

                 #,#

                 #,+#

                 /pat1/,/pat2/

                  #,/pat1/

     (4) ~:步進

               1~2 奇數行

               2~2 偶數行

v

三、編輯命令

        d: 刪除模式空間匹配的行

        p: 顯示模式空間中的內容

        a \text:在行后面追加文本;支持使用\n實現多行追加

        i \text:在行前面插入文本;支持使用\n實現多行插入

        c \text:替換行為單行或多行文本

        w /path/to/somefile: 保存模式匹配的行至指定文件

        r /path/from/somefile:讀取指定文件的文本至模式空 間中匹配到的行后

        =: 為模式空間中的行打印行號

        !:模式空間中匹配行取反處理

        s///:查找替換,支持使用其它分隔符,s@@@,s### v

 

 替換標記:

         g: 行內全局替換

         p: 顯示替換成功的行

         w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中

 

四、sed示例

v    sed ‘2p’  /etc/passwd v

      sed –n ‘2p’ /etc/passwd v

      sed –n ‘1,4p’ /etc/passwd v

      sed –n ‘/root/p’  /etc/passwd v

      sed –n ‘2,/root/p’  /etc/passwd 從2行開始 v

      sed -n ‘/^$/=’  file 顯示空行行號 v

      sed –n –e ‘/^$/p’ –e ‘/^$/=’  file v

      sed ‘/root/a\superman’  /etc/passwd行后 v

      sed ‘/root/i\superman’ /etc/passwd 行前 v

      sed ‘/root/c\superman’ /etc/passwd 代替行

v    sed ‘/^$/d’ file

    vsed ‘1,10d’   file v

      nl /etc/passwd |sed ‘2,5d’ v

      nl /etc/passwd | sed ‘2a tea’ v

      sed 's/test/mytest/g' example v

      sed –n‘s/root/&superman/p’ /etc/passwd 單詞后 v

      sed –n‘s/root/superman&/p’ /etc/passwd 單詞前 v

      sed -e ‘s/dog/cat/’ -e ‘s/hi/lo/’ pets  v

      sed –i.bak  ‘s/dog/cat/g’ pets

 

 

 五、高級編輯命令:

     h: 把模式空間中的內容覆蓋至保持空間中

     H:把模式空間中的內容追加至保持空間中

     g: 從保持空間取出數據覆蓋至模式空間

     G:從保持空間取出內容追加至模式空間

     x: 把模式空間中的內容與保持空間中的內容進行互換

     n: 讀取匹配到的行的下一行覆蓋至模式空間

     N:追加匹配到的行的下一行至模式空間

     d: 刪除模式空間中的行

     D:刪除當前模式空間開端至\n的內容(不在傳至標準輸 出),放棄之后的命令,但是對剩余模式空間重新執行sed

 

六、sed示例 :v

      sed -n 'n;p' FILE v

      sed '1!G;h;$!d' FILE v

      sed '$!N;$!D' FILE v

      sed '$!d' FILE v

      sed ‘G’ FILE v

      sed ‘g’ FILE v

      sed ‘/^$/d;G’ FILE v

      sed 'n;d' FILE v

      sed -n '1!G;h;$p' FILE

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

(0)
xiaoqiang512xiaoqiang512
上一篇 2016-08-12
下一篇 2016-08-12

相關推薦

  • Linux學習練習及作業&day07-正則表達式&文本處理工具

    第一部分、使用基本的文本處理工具(非grep)練習以下5題。 1、找出ifconfig命令結果中本機的所有IPv4地址     [root@localhost ~]# ifconfig |head -2 |tail -1     …

    Linux干貨 2016-08-08
  • 第三周作業

    1.列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | sort -u 2.取出最后登錄到當前系統的用戶的相關信息。 […

    Linux干貨 2017-01-04
  • 正則表達式之初體驗

    學習正則表達式之前,看過這復雜的表達式,猶如天書,無比高大上;懷著戰戰兢兢的心情,開始了學習之旅: 一、  正則表達式:Global search REgular expression and Print out the line. 我的理解是:通過一大堆符號組成的公式逐行查找文本中匹配的字符串并顯示出來  分類: &…

    Linux干貨 2015-03-31
  • Linux 的硬鏈接與軟鏈接的區別

       鏈接是指在電子計算機程序的各模塊之間傳遞參數和控制命令,并把它們組成一個可執行的整體的過程。通俗一點無非是把文件名和計算機文件系統使用的節點號鏈接起來。   linux中鏈接有硬鏈接和軟連接之分,首先我們來介紹硬鏈接,硬鏈接相當于創建了文件的第二個名字,增加了額外的記錄項用來引用文件,還是隸屬與同一文件系統上,是同一個物理…

    Linux干貨 2016-10-20
  • 文本處理三劍客之sed

    文本處理三劍客之sed sed概述 sed使用示例 sed的高級應用 sed概述 sed, 作為文本三劍客之一,其定位就是一個編輯器, 而且sed是一個流式編輯器(stream editor),其主要功能是過濾和轉換文本。 sed – stream editor for filtering and&…

    Linux干貨 2016-08-12
  • Linux基于PXE實現系統全自動無人值守安裝

    前言 在生產環境中,我們時常會需要在多臺客戶端主機或服務器安裝操作系統,如果每一臺都去手動安裝,費時費力,顯然是不現實的。那么,如何高效的完成此類工作呢?文將講解如何實現Linux系統的全自動無人值守安裝。 提供PXE服務所需安裝包 dhcp:動態主機配置協議,給客戶端提供ip地址 tftp-server:tftp服務器端,提供系統安裝所需文件 xinetd…

    Linux干貨 2015-04-01

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-12 12:27

    對sed的工作原理可以通過圖片來顯示,這樣看起來就更直觀了,對地址定界應該表述清楚,而不是簡單的粘貼筆記。

欧美性久久久久