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 20:48
下一篇 2016-08-12 09:01

相關推薦

  • Linux里的用戶與組

    任何事務的進行都離不開管理,脫離了管理的系統將會是一團亂麻。今天就來講講Linux里的用戶與組的管理 首先,用戶與組不會憑空出現,必須得是系統本身或人為創建的 。     所以,系統創建的就叫系統用戶.系統組,用戶創建的就是普通用戶.普通組。 useradd  創建用戶 -u 創建用戶并指定用戶的UID -g…

    2017-07-30
  • Linux命令之:setfacl和getfacl

    命令總結之:setfacl和getfacl acl:access control list,實現靈活的權限管理 除了文件的所有者,所屬組合其他人,可以對更多的用戶設置權限 acl生效順序:所有者、自定義用戶、自定義組、其他人 1、首先我們查看man幫助文檔說明 [root@centos7 sixijie]# man setfac…

    Linux干貨 2016-08-04
  • Linux的用戶組和權限(一)

    導讀:本章主要內容如下       1.解釋Linux的安全模型      2.解釋用戶賬號和組群賬號的目的      3.用戶和組管理命令      4.理解并設置文件權限 &n…

    Linux干貨 2016-08-04
  • nginx基礎模塊

    目錄: nginx基礎模塊: 1.ngx_http_access_module模塊: 2.ngx_http_auth_basic_module模塊 3.ngx_http_stub_status_module模塊 4.ngx_http_log_module模塊 5.ngx_http_gzip_module: 6.ngx_http_ssl_module模塊: 7…

    Linux干貨 2017-08-08
  • 優云Monitor:大規模Docker平臺自動化監控之路

    本文介紹了通過優云Monitor,如何實現大規模容器運維平臺的自動化監控需求。 盡管Docker技術目前還處于不穩定的發展與標準制定階段,但這門技術已經呈現了極其火熱的增長狀態,卻已經是不爭的實事。到底有多火熱?讓我們先來看一張來自國外監控公司DataDog 2016年最新調查報告: 從圖中可以看出,自2015年5月后,采用容器技術的應用呈現了30%的大幅增…

    2016-08-05
  • KeepAlived高可用集群詳解及拓撲實驗搭建配置

    Linux Cluster:KeepAlive 1.集群類型:LB(負載均衡集群),HA(高可用集群),HP(高性能集群)     LB:均衡負載的實現LVS     HA:高可用的實現KeepAlived 2.RS:健康狀態檢測方式: (1)網絡層:icmp ping (2)傳…

    Linux干貨 2016-11-01

評論列表(1條)

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

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

欧美性久久久久