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
下一篇 2016-10-09

相關推薦

  • 文件系統結構

    -文件系統結構
    -應用程序的組成部分
    -文件類型

    2018-03-13
  • Linux基礎之shell腳本編程(三)

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現;   1 #!/bin/bash   2 #author:BaoZhang   3 #  …

    Linux干貨 2016-11-20
  • ansible 入門與進階

    ansible 入門與進階 Configuration、Command and Control 是什么 ? SSH-based configuration management, deployment, and task execution system 運維工具的分類: agent:基于專用的agent程序完成管理功能,puppet, func, zabb…

    2016-11-09
  • 文件掛載

    (1)創建目錄 /mnt/file,利用dd命令創建一個大文件; (2)將文件格式化,這個文件有文件系統,相當于一個分區; (3)直接用blkid 看不到文件,可以用mount -o loop 掛載文件,掛載上后,文件就可以當作分區來用了; (4)掛載文件的優勢在于,方便移動。分區不能隨便移動而文件可以; centos6是要加-o loop的 centos7…

    2017-05-03
  • 文件系統磁盤管理上

    磁盤:主要作用用于存儲數據 早期一塊硬盤共有256個盤面,每個盤面有1024個磁道,每個磁道有63個扇區,每個扇區的大小是512byte 硬盤的命名: 早期IDE硬盤標記為hd scsi、usb、sas標記為sd 引用設備的方式 設備文件名 標卷 UUID 硬盤分區: 第0個磁道的第0個扇區存放的是磁盤的信息 MBR:Master Boot Record 主…

    Linux干貨 2016-08-30
  • grep正則表達式及sort、diff等相關命令

    Linux文本處理三劍客: grep:文本過濾工具(模式:patter) sed:stream editor 流編輯器,文本編輯工具 awk:linux上的實現gawk,文本報告生成器(格式化文本) * 正則表達式:Regular Expression,REGEXP,由一類特殊字符及文本字符所編寫的模式,其中有些字符其不表達字面意義,而是…

    Linux干貨 2016-12-29
欧美性久久久久