sed

簡介

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

一 sed

sed: Stream EDitor, 行編輯器;

    用法:

         sed [option]… 'script' inputfile…

         常用選項:

         -n:不輸出模式中的內容至屏幕;

         -e: 多點編輯;

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

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

         -i: 原處編輯;

    地址定界:

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

        (2) 單地址:

                   #: 指定的行;

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

        (3) 地址范圍:

                #,#

                #,+#

                /pat1/,/pat2/

                #,/pat1/

         (4) ~:步進

                1~2

                2~2

    編輯命令:

         d: 刪除

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

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

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

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

         w /path/to/somefile: 保存模式空間匹配到的行至指定文件中;

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

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

         !: 取反條件; 

         s///:支持使用其它分隔符,s@@@,s###;

         替換標記:

         g: 行內全局替換;

         p: 顯示替換成功的行;

         w /PATH/TO/SOMEFILE:將替換成功的結果保存至指定文件中;

        

示例1:再test.txt文件中cat替換了linux

     sed 's/linux/cat/' test 

    blob.png

示例2: 在命令行使用多個編輯器命令

    sed -e 's/linux/cat/; s/is/hello/' test.txt 

    blob.png

示例3:從文件中讀取編輯器命令,有大量的要處理的sed命令,將他們放在一個文件中,可以在sed -f 選項來指定文件,本例放在了script

    sed -f script test.txt 

    blob.png

示例4:顯示被命令修改過的行

    sed -n 's/test/cat/p' test2.txt 

    blob.png

示例5:數字方式的行尋址,修改2至3行

     sed '2,3s/linux/cat/' test.txt

    blob.png

示例6: 刪除2至3行

    sed '2,3d' test.txt

    blob.png   

示例7: 新行插入到數據流中第三行后面的例子

    sed '3a\hello word' test.txt

    blob.png

示例8:修改第三行中的文本

     sed '3c\hello word' test.txt

    blob.png    

示例9:刪除除/boot/grub/grub.conf文件中所有以空白開頭的行行首的空白字符;

    sed 's@^[[:space:]]\+@@' /boot/grub/grub.conf  

    blob.png       

示例10:刪除/etc/fstab文件中所有以#開頭,后面至少跟一個空白字符的行的行首的#和空白字符;

    sed 's@^#[[:space:]]\+?@@' /etc/fstab

    blob.png

示例11:echo一個絕對路徑給sed命令,取出其基名;取出其目錄名

    echo "/etc/sysconfig/" | sed 's@[^/]\+/\?$@@'

    blob.png

    

    高級編輯命令:

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

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

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

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

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

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

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

        d: 刪除模式空間中的行;

        D:刪除多行模式空間中的所有行;

示例12:顯示test3.txt文件中的偶數行

    sed -n 'n;p' test3.txt

    blob.png

示例13:逆向顯示test3.txt文件中的內容

    sed '1!G;h;$!d' test3.txt

    blob.png

示例14:取出test3.txt 文件中的最后2行

     sed '$!N;$!D' test3.txt

    blob.png

示例15:取出test3.txt 文件中的最后一行

    sed '$!d' test3.txt    

    blob.png

示例16:顯示test3.txt 中的奇數行

    sed 'n;d' test3.txt    

    blob.png

    

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

(0)
liangkailiangkai
上一篇 2016-03-22 10:50
下一篇 2016-03-24 15:59

相關推薦

  • Linux發展史

    Linux發展史 一、歷史 (一)、Unix 1、Unix操作系統是一個強大的多用戶、多任務操作系統,支持多種處理器架構。 2、最早由KenThompson(湯普遜)、Dennis Ritchie(丹尼斯·里奇,C語言之父,Unix之父)和Douglas McIlroy(麥克羅伊,程式設計師)于1969年在AT&T的貝爾實驗室開發。 3、目前它的商標…

    Linux干貨 2016-10-14
  • 用戶、組的創建和管理

    用戶的創建 useradd usermod userdel useradd:創建用戶 create a new user or update default new user information     useradd [options]… LOGIN     &…

    Linux干貨 2016-08-03
  • Linux文件管理和Bash特性

    一、Linux基本文件管理命令 主要介紹cp、mv、rm命令的基本用法以及使用示例 cp命令 cp命令用來將一個或多個源文件或者目錄復制到指定的目的文件或目錄 cp (選項) (參數) 常用選項: -a:此參數的效果和同時指定”-dpR”參數相同,用于實現歸檔; -d:復制符號鏈接文件本身,而非其指向的源文件; -f:強行復制文件或目錄,不論目標文件或目錄是…

    Linux干貨 2017-07-09
  • centos 7 之nmcli命令

    1、nmcli命令的作用 nmcli : command‐line tool for controlling NetworkManager     NetworkManager:動態管理和監控網絡設置的守護進程。用戶和腳本都可使用命令行工具 nmcl…

    Linux干貨 2016-09-10
  • LVS

    LVS概念 LVS(Linux Virtual Server):Linux 虛擬服務器  LVS是個負載均衡設備,它不提供任何服務,用戶請求到這里的時候,它是將客戶需求轉發至后端真正提供服務的服務,所以說后端的服務稱作real server。LVS分為兩段,前一段稱為ipvsadm(管理集群服務的命令行工具),后面一段叫做ipvs(內核模塊) LVS的類型 …

    Linux干貨 2017-02-17
  • 第二周博客作業

    一、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示 Linux文件管理類命令有cp、mv、rm 1、cp命令:copy files and directories 使用方法: 單源復制cp [OPTION]… [-T] SOURCE DEST1)如果DEST不存在,則事先創建此文件,并復制源文件的數據流至DEST中2)如果…

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