SED命令

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

sed命令:

      文本處理三劍客:

            grep;egrep;fgrep:文本過濾器

            sedStream  EDitor,流編輯器,行編輯器;

            awk:文本格式化工具,報告生成器

sed   [OPTION]… {script-only-if-no-other-script}[input-file]…

           地址定界編輯命令

    常用選項:

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

                    -e script, –expression=script:多點編輯;

                    -f /PATH/TO/SED_SCRIPT_FILE

                    -r, –regexp-extended:支持使用擴展正則表達式:

                    -i [SUFFIX], –in-;lace[=SUFFIX]:直接編輯原文件;

 地址定界:

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

              (2)單地址:

                    #:指定行

                    /pattern/:被此模式所匹配到的每一行

              (3)地址范圍;

                    #,#

                    #,+#

                    #/patl/

                      /patl/,/pat2/,…

                    $: 最后一行

              (4)步進:~

                     1~2:所有奇數行

                     2~2:所有偶數行

編輯命令:

          d:刪除

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

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

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

          c \text: 把匹配到的行替換為此處指定的文本“text”;

         w /PATH/TO/SOMEFILE:保存模式空間匹配到的行至指定的文件中;

         r /PATH/FROM/SOMEFILE:讀取指定文件的內容至當前文件被模式匹配到的行后面;即文件合并;

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

       ?。簵l件取反; 地址定界!編輯命令;

s///:查找替換其分隔符可自行指定,常用的有s@@@,s###等;

            替換標記:

                g:全局替換

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

                p:顯示替換成功的行

高級編輯命令:

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

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

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

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

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

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

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

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

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

 

           示例:

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

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

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

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

               sed ‘/^$/d;G’ FILE:刪除原有的所有空白行,

而后為所有的非空白行后添加一個空白行;

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

               sed ‘G’ FILE: 在原有的每行后方添加一個空白行;

基本sed編程舉例:

          使用p(rint)顯示行: sed -n ‘2p’  temp.txt   只顯示第2,使用選項n

          打印范圍:  sed -n ‘1,3p’  temp.txt         打印第1行到第3

          打印模式:  sed -n ‘/movie/’p  temp.txt     打印含movie的行

         使用模式和行號查詢:  sed -n ‘3,/movie/’p  temp.txt   只在第3行查找movie并打印

         顯示整個文件:  sed -n ‘1,$’p  temp.txt      $為最后一行

         任意字符:  sed -n ‘/.*ing/’p  temp.txt     注意是.*ing,而不是*ing

          打印行號:  sed -e ‘/music/=’  temp.txt

          附加文本:(創建sed腳本文件) chmod  u+x  script.sed, 運行時 ./script.sed  temp.txt

                 #!/bin/sed -f

                 /name1/ a/             #a/表示此處換行添加文本

                  HERE ADD NEW LINE.     #添加的文本內容

         插入文本: /name1/ a/ 改成 4 i/ 4表示行號,i插入

         修改文本: /name1/ a/ 改成 /name1/ c/ 將修改整行,c修改

         刪除文本: sed ‘1d’ temp.txt  或者 sed ‘1,4d’ temp.txt

        替換文本: sed ‘s/source/OKSTR/’ temp.txt     source替換成OKSTR

                 sed ‘s//$//g’ temp.txt             將文本中所有的$符號全部刪除

                 sed ‘s/source/OKSTR/w temp2.txt’ temp.txt 將替換后的記錄寫入文件temp2.txt

        替換修改字符串: sed ‘s/source/”ADD BEFORE” &/p’ temp.txt

               結果將在source字符串前面加上“ADD  BEFORE”,這里的&表示找到的source字符并保存

       sed結果寫入到文件: sed ‘1,2 w temp2.txt ‘ temp.txt

                     sed ‘/name/ w temp2.txt’  temp.txt

        從文件中讀文本: sed ‘/name/r temp2.txt’  temp.txt

        在每列最后加文本: sed ‘s/[0-9]*/& Pass/g’  temp.txt

        shellsed傳值: echo  $NAME | sed “s/go/$REP/g”   注意需要使用雙引號

快速一行命令:

         ‘s//.$//g’           刪除以句點結尾行

         ‘-e /abcd/d’       刪除包含abcd的行

         ‘s/[][][]*/[]/g’   刪除一個以上空格,用一個空格代替

         ‘s/^[][]*//g’      刪除行首空格

         ‘s//.[][]*/[]/g’   刪除句號后跟兩個或更多的空格,用一個空格代替

         ‘/^$/d’             刪除空行

         ‘s/^.//g’            刪除第一個字符,區別   ‘s//.//g’刪除所有的句點

         ‘s/COL/(…/)//g’  刪除緊跟COL的后三個字母

         ‘s/^////g’            刪除路徑中第一個/

 

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

(0)
MFXMFX
上一篇 2017-05-01
下一篇 2017-05-01

相關推薦

  • YUM LNMP 安裝 wordpress

    1配置防火墻 Iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT #允許80端口通過防火墻 iptables-A&…

    Linux干貨 2016-06-22
  • 深入了解正則表達式與grep應用

    剛開始學習正則表達式時候,感覺和看無字天書沒什么分別,迷茫了一段時間后,仔細去理解,慢慢你會發現也沒什么的。認真去鉆研了,多練習,是可以理解他們的含義的。也許正如老師所言,學習linux ,入門的確很陡峭,對于我這個基礎薄弱,智商低于80的人來說的確很吃力。關于正則概念的就不去描述了,說起來真的不好表達,下面通過一些實例來進行深入理解吧。 1.顯示當前系統上…

    2017-11-01
  • 關于大型網站技術演進的思考(十一)–網站靜態化處理—動靜分離策略(3)

    原文出處: 夏天的森林   前文里我講到了網站靜態化的關鍵點是動靜分離,動靜分離是讓動態網站里的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以后,我們就可以根據靜態資源的特點將其做緩存操作,這就是網站靜態化處理的核心思路。由此可見,網站靜態化處理的核心就是動靜分離和緩存兩大方面,上篇我簡單講述了動靜…

    Linux干貨 2015-03-11
  • 馬哥教育N22期第六周作業

    關于vim編輯器使用方法整理 編輯器分為文本編輯器、全屏編輯器、模式化編輯器 vim是最常用的編輯器之一,是vi的增強版 基本模式分為編輯模式、命令模式、輸入模式、末行模式 下面我們介紹一下vim編輯器常用方法: 打開文件 vim +#:打開文件后,直接光標處于第#行行首 +/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配 +…

    Linux干貨 2016-10-09
  • 0803作業

    課上練習 1.當用戶xiaoming 對/testdir  目錄無執行權限時,意味著無法做哪些操作?  drwxr-xr–. 14 root root 4096 Aug  3 13:35 /testdir [xiaoming@localhost ~]$ touch /testdir/f1…

    Linux干貨 2016-08-04
  • MAN手冊各章節功能介紹及快捷鍵位詳細說明

    MAN手冊各章節功能介紹及快捷鍵位詳細說明 M21-陸東貴 Man命令的作用:獲取外部命令的使用幫助信息; 使用方法:]#  man  COMMAND        選項:        -M /PATH/TO/SOME…

    Linux干貨 2016-10-18
欧美性久久久久