Linux三劍客之sed

sed:全稱stream EDit 行文本編輯器

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

sed兩種存貯空間

    模式空間:為處理文件中一行內容的一個臨時緩沖區。處理完一行之后就會把模式空間中的內容打印到標準輸出,然后自動清空緩存。

    保存空間:sed中的另外一個緩沖區,此緩沖區正如其名,不會自動清空,但也不會主動把此緩沖區中的內容打印到標準輸出中。

用法:sed [option] … script  inputfil

    option:

        – n:不輸出模式空間內容的自動打印
        –  e: 多點編輯(用法sed -e script -e script)
        – f /PATH/TO/SCRIPT_FILE: 從指定文件中讀取編輯腳本
        – r: 支持使用擴展正則表達式
           -i: 原處編輯(將原文件進行修改),保存原文的辦法 -i.bak 會將原文的備份成.bak文件再進行修改

    script:

        地址命令:

            地址定界:

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

            (2) 單地址:
                n: 指定的行
                /pattern/:被此處模式所能夠匹配到的每一行
            (3) 地址范圍:
                n,m:n到m行進行處理
                n,+m:n到n+m行
               /pat1/,/pat2/:從第一次匹配pat1的行到到第一次匹配pat2的行
               #,/pat1/
            (4) ~:步進
                1~2 奇數行
                2~2 偶數行

        編輯命令:

            d:刪除模式匹配的行

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

            a \text:z在文件的后面追加文本,支持\n多行追加

            -i \text:在文本的前面追加內容,支持\n多行追加

            c \test:將匹配行的內容替換為test

            w :保存匹配的行到指定路徑

            r:讀取文件到指定行的行尾

            =:為模式匹配的行打印行號

            !:匹配模式空間的行取反

        sed命令之查找替換

            格式:s@查找內容@替換內容@替換標記 或s///或者s###

            替換標記:g全局查找并替換

                 p:結合-n使用,顯示打印替換成功的行

                 w:將替換成功的行保存到文件

        sed 命令之高級編輯命令

            

              h:把模式空間的內容覆蓋到保存空間

           H:把模式空間的內容追加到保存空間

           g:把保存空間的內容覆蓋到模式空間

           G:把保存空間的內容追加到模式空間

           x:模式空間和保存空間的內容互換

           n: 讀取匹配到的行的下一行覆蓋至模式空間
           N:追加匹配到的行的下一行至模式空間
           d: 刪除模式空間中的行
           D:刪除當前模式空間開端至\n的內容(不在傳至標準輸出),放棄之后的命令,但是對剩余模式空間重新執行sed

sed用法高級編輯舉例:

    一、只打印偶數行

    Linux三劍客之sed

     

     二、利用sed實現tac命令功能,將文章倒敘打印出來

    Linux三劍客之sed

     三、只輸出最后兩行

    18.png

    四、只打印最后一行

    

    [#52#root@centos6 /testdir]#sed '$!d' f1

    五、在每行后面添加空行

    Linux三劍客之sed

    六、清空文件內容

    Linux三劍客之sed

    七、將每個偶數行打印兩次

    sed  "n;p" 文件名

sed 用法練習:

    

一、刪除/etc/grub2.conf文件中所有以空白開頭的行行首的空白字符

1.png

1.png

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

       2.png

三、在/etc/passwd每一行行首增加#號
      3.png  

四、在/etc/fstab文件中不以#開頭的行的行首增加#號

      5.png

五、保留/etc/fastab文件中包含#號的行,不包含的刪除

4.png

六、處理/etc/fstab路徑,使用 sed命令取出其目錄名和基名

     6.png

七、利用 sed 取出 ifconfig命令中本機的IPv4地址
  7.png

八、統計centos安裝光盤中Package目錄下的所有rpm文件的以.分隔倒數第二個字段的重復次數   8.png

9.png

10.png

          

            

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

(0)
wangnannanwangnannan
上一篇 2016-08-11
下一篇 2016-08-12

相關推薦

  • N22 網絡班-第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。   2、取出最后登錄到當前系統的用戶的相關信息。   3、取出當前系統上被用戶當作其默認shell的最多的那個shell。   4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxus…

    Linux干貨 2016-09-06
  • 20161028第9天作業

    20161028第9天作業 1、編寫腳本/root/bin/hostping.sh,接受一個主機的IPv4地址做為參數,測試是否可連通。如果能ping通,則提示用戶“該IP地址可訪問”;如果不可ping通,則提示用戶“該IP地址不可訪問” 2、編寫腳本/root/bin/checkdisk.sh,檢查磁盤分區空間和inode使用率率,如果超過80%,就發廣播…

    Linux干貨 2016-10-30
  • 馬哥教育網絡20期+第二周練習博客

    1、 Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 ls 使用方式:ls [OPTION]… [DIR]… 常用選項: -a:顯示所有檔案及目錄;  -A:顯示除影藏文件“.”和“..”以外的所有文件列表; -C:多列顯示輸出結果。這是默認選項;  -l:與“-C”選項功能相反,所有輸出…

    Linux干貨 2016-06-23
  • Linux發行版及哲學思想

    Linux各發行版以及哲學思想 什么是Linux 為什么會有不同的Linux發行版 現有主流發行版,及其他們之間相互關系 Linux所遵循的哲學思想 什么是Linux Linux是一種自由和開放源代碼的Unix-like操作系統,由當時就讀于芬蘭赫爾辛基大學的Linus Torvalds于1991年10月5日首次發布于互聯網。Linux遵循第二版GNU通用公…

    Linux干貨 2016-10-29
  • bash的重定向

    一、簡介         bash的數據流重定向(redirect)是將程序的執結果重新定向到另一文件或者設備。或者把一文件重定向給一程序作為數據來源。默認情況下,命令的執行結果顯示在屏幕上。文件系統中,分為:標準輸入,標準輸出,錯誤輸出。 二、用法   &n…

    Linux干貨 2015-08-11
  • N25 _WSH 第二周

    2、bash 命令執行的狀態結果:        * bash通過狀態返回值來輸出此結果:            * 成功:0            失敗:1-255     &n…

    系統運維 2016-12-12

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-12 12:30

    文章內容飽滿。圖文結合精密,對sed的工作原理可以嘗試著通過畫圖來展示給用戶,這樣會更直觀明了。

欧美性久久久久