Linux文本處理“三劍客”之sed

sed(Stream Editor)是一個行編輯工具。下面我們介紹 sed 的實現原理和基本使用方法。


一、sed 的處理文本的流程

    基本處理流程如下:

wKiom1PeQAmBZYFcAABLpV7pKM4340.jpg

    處理流程是:每次讀入文本文件的一行到內存中的模式空間中,在模式空間中處理後將處理的結果輸出,默認會打印到屏幕上。因此,默認情況下,不會改變原文件的內容。


二、sed 命令的使用

基本語法:sed [options]... '地址定位 編輯命令' FILE...

    地址定位的方法:

        1、行定位:

            start_line[,end_line]

        2、模式匹配

           /pattern1/,/pattern2/ 第一次被pattern1匹配到的行開始,到第一次被pattern2匹配到的行結束之間的所有行

            /pattern/ 被pattern匹配到的行

        3、沒有地址定界,代表的是全文。

    常用參數:

        -n: 靜默模式,不顯示模式空間中的內容

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

        -i: 修改原文件;

        -e: sed -e "" -e "" -e "", sed "{COM1;COM2;COM3}"

        -f: -e的功能差不多,只是將多個COM寫到文件中區。

    編輯命令:命令可在之前加!取反


p:打印    

例如:打印 /etc/fstab 文件的 3 到 5 行

wKioL1PeStuDLgFgAAJm_QHISlE987.jpg

    如果不加 -n 的話,會是什麼效果呢?

wKioL1PeTLbgDrEDAAIMBvb5SWM886.jpg

     這就是 sed 處理流程所決定的,一般 p 命令與 -n 參數一起使用,才能達到想要的效果。

d: 刪除

wKiom1PeUFOA0yCPAANYmJjjozw955.jpg

i \text: 行上方,text即爲插入的內容

a \text: 行下方,text即爲插入的內容

wKioL1PeUsOgeEtZAAGBBGznks0762.jpg

r /path/from/some_file: 把符合條件的行讀到指定文件中

wKioL1PeV3mg6kXVAAK37nn21zU506.jpg

w /path/to/some_file: 把符合條件的行保存至指定的文件中

wKioL1PeV_SxquxPAAOQCz2wp1I296.jpg

=: 顯示符合條件行的行號

wKioL1PeWNGRGEMTAAI6shCnytQ609.jpg


s///: s@@@ 查找替換

    g,i:g是全文替換,i忽略大小寫

1
2
[root@server ~]# sed -e '/^#/d'  -e 's/\(id:\)[0-9]\(:initdefault:\)/\13\2/' /etc/inittab 
id:3:initdefault:


    基本用法應經介紹完畢,最主要的的如何使用正則表達式來定位地址範圍


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章