Linux文件三劍客sed命令用法詳解

sed是一種流編輯器,它是文本處理中非常強大的工具,能夠完美的配合正則表達式使用,用法簡單實用,非常靈活。
??????? 工作原理:sed命令處理文本時,把當前處理的行存儲在一個臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。

在sed高級編輯命令中,還會調用另一個臨時緩沖區,稱為“保持空間”(hold space),在模式空間中為處理完的行可以臨時存儲在保持空間中,在臨時空間接著處理下一行,然后在將保持空間中的行重新存儲在臨時空間中做后續處理,這樣就使得sed命令變的功能得更為強大。

sed命令不僅可以查看,篩選文本內容,還可以對一個或多個文本進行編輯,更改,簡化對文件的反復操作。Linux文件三劍客sed命令用法詳解

??????? sed中有自己的腳本命令,配合這些腳本文件,sed可以實現許多對文本的索引,編輯功能。

sed命令常用選項:sed [option] ‘script’ file

option:

-n :不輸出模式空間內容到屏幕,即不自動打印
    -e :多點編輯
    -f :/ PATH/SCRIPT_FILE :  從指定文件中讀取編輯腳本
    -r :支持使用擴展正則表達式
    -i : 修改源文件
    -i.bak : 備份文件并原處編輯
    -v : 打印版本和版權信息。

script:’地址+命令’

地址:

  1. )沒有地址:默認對全文進行處理。
  2. )單地址:
    X:指定的行
    /pattern/:被匹配到的每一行
  3. )地址范圍:
    X1,X2 : 選取第 X1 行到 X2 行之間的行
    X1,+X2 : 選取第 X1 行之后的 X2 個行
    /pat1/,/pat2/ : 選取 pat1 第一次匹配到的行到 pat2 第一次匹配到的行之間的行
    X,/pat1/ : 選取 X 第一次匹配到的行到 pat1 第一次匹配到的行
  4. )X1~X2 : 步進
    1~2 : 從1開始,步進為2(奇數行)
    2~2 : 從2開始,步進為2(偶數行)

命令:

d : 刪除模式空間匹配的行,并立即啟用下一輪循環
    p : 打印當前模式空間內容,追加到默認輸出之后
    a [\]text : 在指定行后面追加文本。支持使用\n 實現多行追加
    i [\]text : 在行前面插入文本
    c [\]text : 替換行為單行或多行文本
    w : 保存模式匹配的行至指定文件
    r : 讀取指定文件的文本至模式空間中匹配到的行后
    = : 為模式空間中的行打印行號
    ! : 模式空間中匹配行取反處理
    s/X/X/g : 查找替換, 支持使用其它分隔符,s@@@ ,s###
    y/XX/XX/ : 檢索所有匹配的項,替換為對應的字符

高級編輯命令:

P : 打印模式空間開端至\n 內容,并追加到默認輸出之前
    h : 把模式空間中的內容覆蓋至保持空間中
    H : 把模式空間中的內容追加至保持空間中
    g : 從保持空間取出數據覆蓋至模式空間
    G : 從保持空間取出內容追加至模式空間
    x : 把模式空間中的內容與保持空間中的內容進行互換
    n : 讀取匹配到的行的下一行覆蓋至模式空間
    N : 讀取匹配到的行的下一行追加至模式空間
    d : 刪除模式空間中的行
    D : 如果模式空間包含換行符,則刪除直到第一個換行符的模式空間中的文本
    # : 把注釋擴展到下一個換行符以前。

案列

基本用法:

首先我們自己創建了一個方便查看效果的文件newf
Linux文件三劍客sed命令用法詳解

 

基本篩選功能:

  1. 打印一到3行
    Linux文件三劍客sed命令用法詳解
  2. 查看文件帶有b的行到帶有a的行
    Linux文件三劍客sed命令用法詳解
  3. 打印奇數行
    Linux文件三劍客sed命令用法詳解
  4. 打印帶有字母a或帶有字母b的行
    Linux文件三劍客sed命令用法詳解
  5. 把所有b,c都換成a
    Linux文件三劍客sed命令用法詳解
    如果不帶g 每行只會替換第一個(默認)匹配到的字符
    g可以換成數字,表示替換匹配到的第幾個字符
    可以將字符替換為 空 表示刪除
  6. 在第3行前一行插入字符
    Linux文件三劍客sed命令用法詳解
  7. 在第3行后插入字符
    Linux文件三劍客sed命令用法詳解
  8. 將每行第二個字符刪除
    Linux文件三劍客sed命令用法詳解
    如圖所示,所有的空格被刪掉。-r選項支持擴展正則表達式(相當于sed ‘s/^\(.\)\(.\)/\1/’)另一種方式sed ‘/.//2’ newfsed ”
  9. 把所有abc替換為ABC
    Linux文件三劍客sed命令用法詳解
    -y選項是把前面匹配的項全部對應替換為后面的字符

進階用法:

  1. 將1行放到3行后面
    Linux文件三劍客sed命令用法詳解
    h:將模式空間的內容覆蓋保持空間中
    G:將保持空間內容追加到模式空間中
  2. 在每行后面添加1個空行
    Linux文件三劍客sed命令用法詳解
    保持空間默認有一個空白行
  3. 把1到4行放在5行后面
    Linux文件三劍客sed命令用法詳解
    1h:覆蓋掉保持空間中的空白行
    1,4d:刪除最前面的4行
  4. 將第1行替換到第3行
    Linux文件三劍客sed命令用法詳解

 

總結:通過一些簡單的例子,可以看出sed命令簡單,但是功能復雜多樣,需要通過大量的練習才能熟練掌握。sed命令在運用中十分重要,它可以批量搜索,顯示,修改文本內容,這是必須要學會,并熟練使用的工具。

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

(6)
kstg5663294kstg5663294
上一篇 2017-06-24 16:08
下一篇 2017-06-24

相關推薦

  • 邏輯卷(LVM)管理實例詳解

    LVM基本術語 下面是LVM需要了解的基本術語:    物理卷(PV physical volume): 它可以是物理硬盤上的分區,也可以是整塊物理硬盤;  卷組(VG volume group): 建立在物理卷之上,一個卷組至少包括一個物理卷,可以動態增刪物理卷;  邏輯卷(LV logical volume):建立…

    Linux干貨 2016-09-01
  • find命令的基本用法

     linux 中find 常用示例解析 find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression]    其實[-H] [-L] [-P] [-D debugopts] [-Olevel]這幾個選項并不常用(至少在我的日常工作中,沒 &…

    Linux干貨 2016-05-05
  • Centos6啟動流程詳解

    一、名詞解釋 POST: Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、串并行接口、鍵盤、CD-ROM光驅等硬件情況的檢測。 BIOS:Basic Input andOutput System,保存著有關計算機系統最重要的基本輸入輸出程序,系統信息設置、開機加電自檢程序和系…

    2017-03-28
  • linux基礎學習之進程管理和任務計劃

    內容:   進程相關概念(用戶空間、內核空間,進程、線程)   進程及系統相關工具(ps、top、pgrep、pidof、kill)   調整nice值(nice、renice)   作業管理(jobs、fg、bg、kill,&)   計劃任務(at、crontab) 一、進程相關概念 內核的功用:進…

    Linux干貨 2016-09-07
  • CentOS7.2編譯安裝httpd

    ?環境:CentOS7.2 軟件包:httpd-2.2.29.tar.bz2 1、解壓縮httpd-2.2.29.tar.bz2 2、進入解壓過的文件夾,查看用法(INSTALL、)后然后./configure –help查看參數后執行需要的參數操作,     通過選項傳遞參數,指定啟用特性,安裝路徑的等,…

    Linux干貨 2016-08-24
  • Linux運維學習歷程-第七天-Linux文本工具及正則表達式

    文本處理工具: Linux文本處理三劍客:   grep、egrep、fgrep:文本過濾工具(模式:pattern)工具      grep:基本正則表達式 -E -F      egrep:擴展正則表達式 -G -F      fgrep:不支持正則表達式…

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