sed簡介

sed是什么

sed是linux文本處理工具三劍客(grep,sed,awk)之一,用來處理文本的流編輯工具。主要用來編輯一個或多個文件,簡化重復操作文件。


sed的工作原理和相關概念

sed是行處理的模式,針對文件內容從上往下一行一行地讀取。每行的操作步驟如下示意圖:

sed-原理.png


sed的語法格式

sed [OPTION]... 'script' [input-file] ...

options

-n 或者 –quiet 或者 –silent:僅顯示經過腳本處理(執行寫操作)的模式空間的內容 
-e 或者 –expression:以選項中的指定的script來處理輸入的文本文件; 
-f 或者 –file:以選項中指定的script文件來處理輸入的文本文件 
-h 或者 –help:顯示幫助信息 
-V 或者 –version:顯示版本信息

script

script中包含了兩部分,定界符和命令處理

  • 定界符

1、空地址:表示在全文范圍
2、單地址:  
    #:指定行;  
    /pattern/:被此模式所匹配到的每一行;
3、地址范圍:  
    #,#:從起始行到結束行  
    #,+#:從第起始行,向后數多少行  
    #,/par1/:從起始行到pat1第一次匹配到的行  
    /pat1/,/pat2/:從pat1第一次匹配到的行到pat2第一次匹配到的行  
    $:最后一行
  • 處理命令

    d:刪除當前模式空間中的內容    
    p:將當前模式空間中的內容送到標準輸出
    a\text:在當前模式空間后面追加內容text,支持\n追加多行
    i\text:在當前模式空間前面插入內容text,支持\n插入多行
    c\text:把當前模式空間的內容替換為text,支持\n替換為多行
    r /PATH/FROM/FILE:讀取指定文件的內容,追加到當前模式空間后面
    =:在當前模式空間前面插入當前模式空間在源文件中的行號
    !:命令前加!,給定界符取反,不在定界范圍內才執行命令
    s/pat1/text/:查找替換,分隔符可自定義,如@@@,###等    
        修飾標記:        
            g:全局替換,沒有此標記,只替換正則匹配到的第一項        
            w /PATH/TO/FILE:將替換后的內容保存一份至指定文件        
            p:將替換成功的內容送至標準輸出

sed每次執行時還擁有一個保持空間(hold space),用來臨時保存內容,開始時默認是一個空行。在模式空間和保存空間之間來回操作內容,可以實現一些很復雜的功能。下面是一些高級命令:

    h:把當前模式空間中的內容覆蓋至保持空間中    
    H:把當前模式空間中的內容追加至保持空間中
    g:把保持空間的內容覆蓋至當前模式空間中
    G:把保持空間的內容追加至當前模式空間中
    x:把當前模式空間和保持空間中的內容互換
    n:我的理解是對模式空間的內容執行一次輸出測試,然后再覆蓋讀取文件下一行的內容到模式空間中
    N:我的理解是對模式空間的內容執行一次標準輸出測試,然后再覆蓋讀取文件下一行的內容到模式空間中        
            標準輸出測試(我自創的概念,見上面工作原理圖):就是判斷是否用了-n選項,沒有則將模式空間的內容送至標準輸出,否則丟棄模式空間的內容
    d:刪除模式空間中的行
    D:刪除模式空間中的所有行
  • 個人理解:每讀行的內容對應的模式空間的內容處理完畢時,都會進行一次輸出測試,而n和N命令在讀取下一行之前,當前行也被處理完畢,也會進行一次標準輸出測試。

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

(0)
小江小江
上一篇 2016-10-09 09:05
下一篇 2016-10-09 09:06

相關推薦

  • 一個開發眼中的運維

    在云計算時代,開發和運維的結合變得越來越重要。在DIFF論壇第一期,前新浪SAE運維主管,鄭志勇,分享了《一個開發眼中的運維》根據自己從開發人員轉型運維之后的心得,談如何把在開發上的運用抽象思維方式運用到運維領域。 1. 運維不是什么? 運維不是打雜的,運維不是客服,運維也不是服務開發的,但要做好合作。 2. 運維是什么? 運維服務于整個產品,保證架構合理,…

    Linux干貨 2015-03-11
  • CentOS軟RAID實現配置

     實現軟raid1、fdisk t fd //修改磁盤分區類型fd2、創建raid設備     創建一個RAID5,5塊兒硬盤4塊做RAID,1塊兒做空閑硬盤(頂替硬盤使用)    mdadm -C /dev/md0 -a yes -l 5  -n …

    Linux干貨 2016-08-30
  • php5.4zend-opcache安裝

    公司在做高并發壓測,fastcgi,apc,ocache,opcache, 幾經考慮,最終考慮用opcache,因為作為 zend-opcache合并為php5.5的分支版本,xcache的前途堪慮, 在環境的安裝上竟然折騰了半個下午沒有搞定,這個作下問題記錄。 先說安裝, http://php.net/manual/zh/opcache.installat…

    2015-04-20
  • 正則表達式的如何使用

    簡述:正則表達式主要用于文本的搜索,它表示了搜索文本的過濾條件。根據這些條件,對目標文本朱行進行匹配檢查,最后對輸出匹配到符合過濾條件的行。 使用:正確高效的使用正則表達式,需要掌握以下基本知識點         1:語法 grep [OPTION] PATTERN FILE……

    Linux干貨 2017-06-04
  • 虛擬機的安裝

    虛擬機的安裝步驟: 1、打開VMware點擊創建新的虛擬機 2、選擇典型安裝方式點擊下一步 3、選擇稍后安裝操作系統點擊下一步 4、客戶機操作系統選擇Linux,版本選擇Centos 64位 5、設定虛擬機的名稱及存放路徑 6、設定磁盤的容量,選中將虛擬磁盤存儲為單個文件 7、對虛擬設備進行設置 8、CD/DVD此項選中使用ISO映像文件并選擇映像所在路徑 …

    2018-03-27
  • 我的第一篇博客

        對于一個連日記都懶得寫的人來說,寫博客博客還真是一個難題。但是為了能讓自己有所進步有所提高、更是為了記錄自己逐步成長的過程,還是下定決心記錄下在接下來的日子里的點點滴滴。當然,這點點滴滴指的是 —— 知識     我想剛學linux的新手眼里除了圖形化就只有黑白兩種顏色了吧!但是為了提高自己…

    Linux干貨 2017-07-15
欧美性久久久久