sed命令的入門與進階

sed:Stream EDitor

    什么是sed呢?sed被稱為linux文本處理三劍客之一,另外兩個就是大名鼎鼎的grep和awk。sed是非交互性的流編輯器,在處理文本時一次只讀取一行文本,然后基于所給定的編輯腳本對模式空間中的內容做編輯處理并把處理后的結果輸出至標準輸出。接著處理下一行文本,這樣不斷重復,直到文件的末尾。sed命令默認不會對原文件做修改,因此你可以使勁的造,而不必擔心有什么可怕的后果。

   下面來說說sed命令的用法:

     格式:sed [option]… ‘script’ inputfile…

用法:

    sed [option] ‘addr1,[addr2]編輯命令’ inputfile…

    sed [option] “addr,[addr2]編輯命令” inputfile…

        例:sed -n ‘2d’ /etc/issue

    
          -n:靜默模式,不輸出模式空間中的內容至標準輸出
          -e ‘script’ [-e ‘script’]: 指定多個編輯指令
                    # sed -e ‘/^$/d’ -e ‘s@^#@@’ /etc/fstab
          -f:/PATH/SCRIPT_FILE: 從指定文件中讀取編輯腳本
                    # sed -f sed.script /etc/fstab
                        將一組命令寫入腳本文件中。
                            例:/^$/d/
                                s@^#@@
          -r:使用擴展正則表達式    
          -i:原處編輯(直接修改原文件,你懂的)
      
     地址定界:
             1.不給地址:對全文進行處理
              2.單地址:
                         #:指定行;
                         /pattern/:被此處模式所能夠匹配到的每一行;     
              3.地址范圍:
                         x,y:表示從x行到y行
                         #,+#:表示從#行到+#行,例:3,+3:表示從第3行到第6行
                         /pat1/,/pat2/:從/pat1/所匹配到的行到/pat2/所匹配到的之間所有的行
                         #,/pat1/:從#行開始,到第一次被/pat1/所匹配到的行結束之間所有的行
              4.~:步進
                        1~2p:顯示奇數行
                         例:sed ‘1~2p’ /etc/issue
                        2~2p:顯示偶數行
                         例:sed ‘2~2p’ /etc/issue
編輯命令

d:刪除模式空間中匹配到的行

例:sed ‘/^UUID/d’ /etc/fstab

p:顯示模式空間中的內容(不配合-n選項,默認會顯示兩遍)

例:sed -n ‘/^UUID/p’ /etc/fstab

a  \text:在匹配到的行后面添加文本;

例:sed ‘/^UUID/a Test line’ /etc/fstab

例:sed ‘/^UUID/a Test line \nsecond line’ /etc/fstab(配合\n可實現多行追加)

i  \text:在匹配到的行前面添加文本;支持使用\n實現多行插入    

例:sed ‘/^UUID/i Test line’ /etc/fstab    

c \text:替換匹配的行為單行或多行文本

例:sed ‘^/UUID/c uuid’ /etc/fstab

w /PATH/TO/FILE:保存模式空間中的內容至指定文件中

例:sed ‘^/UUID/w /tmp/fstab.txt’ /etc/fstab

r /PATH/FORM/FILE:   讀取指定文件的內容至模式空間中所匹配到的行后面 

例:sed ‘7r /etc/passwd’ /etc/fstab

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

例:sed ‘/^\//=’ /etc/fstab

!:對地址定界取反

例:sed ‘/^UUID/!d’ /etc/fstab

s/查找條件/替換為的內容/:支持使用其它分隔符,s@@@,s###
                   替換標記:
                             g:global,行內全局替換
                             i:忽略字符大小寫 
                             p:顯示替換成功的行
                             w /PATH/TO/FILE:將替換成功的結果保存至指定文件中
                  例:sed ‘s#^UUID#uuid#’ /etc/fstab

                            同時也支持后向引用

                                   例:sed -n ‘s#r..t#&er#p’ /etc/passwd 

高級編輯命令:
     h(hold):把模式空間中的內容覆蓋至保持空間中
     H :把模式空間中的內容追加至保持空間中
     g(get):從保持空間取出內容覆蓋至模式空間
     G:從保持空間取出內容追加至模式空間
     x:把模式空間中的內容與保持空間中的內容進行互換
     n:讀取匹配到的行的下一行覆蓋至模式空間
     N: 讀取匹配到的的行下一行追加至模式空間
     d:刪除模式空間的行
     D:刪除多行模式空間中的所有行
     例:

          sed -n ‘n;p’ FILE:顯示偶數行

           sed命令的入門與進階    

          sed ‘n;d’ FILE:顯示奇數行

          sed命令的入門與進階

          sed ‘1!G;h;$!d’ FILE:逆序顯示文件內容

          sed命令的入門與進階

          sed -n ‘1!G;h;$p’ FILE:逆序顯示文件內容(和上面的命令是同樣的結果)

           sed命令的入門與進階

          sed ‘$!N;$!D’ FILE:取文件最后兩行

          sed命令的入門與進階

sed ‘$!d’ FILE:取出最后一行

sed命令的入門與進階

          sed ‘G’    FILE:在行后面增加空白行

          sed命令的入門與進階

          sed ‘/^$/d;G’ FILE : 把多個空白行合并為一個空白行,并在每一行追加一個空白行

          sed命令的入門與進階

               
         

原創文章,作者:人字拖,如若轉載,請注明出處:http://www.www58058.com/71180

(0)
人字拖人字拖
上一篇 2017-03-16
下一篇 2017-03-16

相關推薦

  • 馬哥教育網絡班20期-第五周課程作業

    Table of Contents 1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; 3、打出netstat -tan命令執行結果中以‘LISTEN’,后或跟空白字符結尾的行; 4、添加用戶bash, tes…

    Linux干貨 2016-07-12
  • 磁盤分區

    磁盤分區 一、分區方式兩種 MBR分區不能超過2個T按柱面分區主引導記錄存放在,0磁道0扇區 512bytes前446字節存放bootloader (軟件程序)64字節:分區表16個字節表示一個有效的分區 故只能分4個主分區。大于4個需要創建擴展分區,并在其中創建邏輯分區。2字節 55AABPT分區GPT:GUID(Globals Unique Identi…

    Linux干貨 2016-08-29
  • 干貨 | 20 行 Python 代碼創建可視化地圖

    當我開始建造Vincent時, 我的一個目的就是使得地圖的建造盡可能合理化. 有一些很棒的python地圖庫-參見Basemap?和?Kartograph能讓地圖更有意思. 我強烈推薦這兩個工具, 因為他們都很好用而且很強大. 我想有更簡單一些的工具,能依靠Vega的力量并且允許簡單的語法點到geoJSON文件,詳細描述一個投影和大小/比列,最后輸出地圖. …

    2017-09-08
  • 創建私有CA

      什么是CA   CA(Certificate Authority)證書頒發機構主要負責證書的頒發、管理以及歸檔和吊銷。證書內包含了擁有證書者的姓名、地址、電子郵件帳號、公鑰、證書有效期、發放證書的CA、CA的數字簽名等信息。證書主要有三大功能:加密、簽名、身份驗證。 搭建私有CA 一、搭建CA服務器 1、生成密鑰 ( ):表示此命令在子進程中運…

    Linux干貨 2017-02-07
  • 常見RAID級別原理, Linux中軟RAID實現方式詳解

    RAID簡介     RAID(Redundant Arry of Independent Disks)獨立冗余陣列,舊稱(Redundant Arry of Inexpensive Disks)廉價冗余陣列,其主要目的是將多個硬盤組成在一起來達到提高I/O、讀寫、冗余性。 RAID分為硬件RAID和軟件RAID &n…

    Linux干貨 2016-03-09
  • 不作死就不會死,運維的危險命令(2)

    命令是一種很有趣且有用的東西,但在你不知道會帶來什么后果的時候,它又會顯得非常危險。所以,在輸入某些命令前,請多多檢查再敲回車。

    2017-12-03

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-03-20 09:47

    盡量不要復制粘貼筆記

欧美性久久久久