vim末行模式與sed命令

1、在vim中進入末行模式進行查找和替換:git

    在編輯模式中按/或?進行模式查找
正則表達式

        格式:/patternvim

    可使用N或n查找上一個或下一個
緩存


    末行命令中的s命令,是進行替換的命令,先查找再根據模式進行替換
ide

        格式:
spa

        :[address]s/PATTERN/STRING/CONTROL 斜線的分隔符能夠用任意字符regexp


[address]:地址定界符ip

1.若是省略,則表示光標所在行內存

2.# 該數字所表明的行號的一行、文檔

3.$ 當前文檔的最後一行;$-1,倒數第二行

4.m,n:m和n都表示數字,其含義爲從第m行到第n行

5.m,+n

6./PATTERN/:被PATTERN匹配到的行

7./PATTERN1/,/PATTERN2/:從PATTERN1到PATTERN2的行

8.%:全部行


        PATTERN:用於替換的字符串

        STRING:替換後的字符串

CONTROL:

g:當前行內全部匹配的字符所有替換


        例:

        :s/asd/123/   替換當前行第一個asd爲123

        :%s/asd/123/    替換全部行第一個asd爲123

        :%s/asd/123/g    替換全部行全部asd爲123

        :/qwe/s/asd/123/    替換第一個包含qwe的行中的第一個asd爲123

        :g/qwe/s/asd/123/    替換全部包含qwe的行中的第一個asd爲123


2、sed命令

    在實施文本文件處理時,是以行爲單位對一個或多個文件進行編輯處理

    sed處理文件時,將開啓一塊臨時內存緩衝區,稱爲"模式空間",將每一行按順序依次放入模式空間進行處理。對於在模式空間內緩存的行

        格式:sed [options] 'script' [file]

    默認狀況下,sed所處理的文件內容都是在內存中完成的,並不會影響磁盤上存放的文件的內容

-n:對於不能被PATTERN匹配的行,不發往標準輸出

-e  script:使用多個script條件編輯,命令的執行順序對結果有影響

-f  sript-file:用指定的script-file中讀取腳本內容再編輯

-i  直接編輯源文件

-r  可使sed支持擴展正則表達式


    script:Addresses+Command

  Addresses:地址定界符

  1.空地址:表示對指定文件的全部行進行編輯處理

  2.單地址:sed對於可以匹配該地址的惟一一行進行處理:

      NUMBER:表示指定行號

      /PATTERN/:指定被PATTERN匹配的全部行

      $:表示最後一行,不支持$-1

  3.地址範圍:

      addr1,addr2  都表示行號,從addr1到addr2結束的全部行,包括addr1和addr2

      fisrt~step   first和step都數字,從first行開始,以step爲步長通過的全部行

      addr1,+N     一共N+1行

  addr1,~N     從addr1行開始,向後查找addr1*N行,包括add1行

  4./PATTERN1/,/PATTERN2/  從被PATTERN1匹配的行開始到被PATTERN2匹配的行結束


    Command:

  =  顯示被PATTERN匹配的行號

  a \text  在被模式匹配的行以後追加text的字符;支持用\n換行,從而實現追加多行信息

  i \text  以前追加text的字符

  c \text  修改成text的字符

  d   在模式空間中刪除被模式匹配的行

  注意:通常在使用d命令時,不建議使用-n選項

  p   將模式空間中匹配的行發送到標準輸出

  注意:通常在使用p命令時,建議使用-n選項

  w filename  能夠是絕對路徑也能夠是相對路徑,w命令將模式空間中被PATTERN匹配的行,存儲到指定的文件中

     注意:建議使用-n選項

  r filename  將匹配到的行加到指定文件後面


  !Command:沒有被PATTERN匹配到的行會執行此命令


  s///:查找並替換,分隔符能夠隨意更換

      s/regexp/replacement/[control]

      regexp:正則表達式,PATTERN

      replacement:替換的內容,純字符串

        支持後向引用

  s/\(string\)/&/

  s/\(string\)/\1/


        示例:

            sed -n /asd/p file  查找file中被asd匹配的行並輸出到標準輸出

            sed -i /asd/s/[[:digit:]]/a/ file 將file中全部被asd匹配行的數字都替換成a並寫入到文件內

            sed -i '$a 123' file 在文件最後添加一行123


        高級編輯命令:      

            sed命令會將一些操做後的結果放在另外一個緩衝區來進行一些複雜操做,該緩衝區稱爲保持空間


            h:將模式空間中的內容存儲到保持空間中,並覆蓋保持空間中原有內容;

         H:將模式空間中的內容存儲到保持空間中,並追加至原有內容以後;

    g:從保持空間取出數據存儲到模式空間中,並覆蓋模式空間的原有內容;

    G:從保持空間取出數據存儲到模式空間中,並追加至原有內容以後;

    x:將模式空間中的內容與保持空間中的內容交換;

    n:讀取被PATTERN匹配到的行的下一行,覆蓋到模式空間;

    N:讀取被PATTERN匹配到的行的下一行,追加到模式空間;

    D:刪除模式空間中的全部行;


        如:             

        sed -n 'n;p' FILE    輸出偶數行

sed '1!G;h;$!d' FILE    倒序輸出

        sed '$!N;$!D' FILE    輸出最後兩行

sed '$!d' FILE    輸出最後一行

sed 'G' FILE    在每一行後加入空白行輸出

sed 'g' FILE    輸出文件總行數的空白行

sed '/^$/d;G' FILE    在每一行後加入空白行輸出,若是自己爲一個或多個空白行則合併爲一行

sed 'n;d' FILE    刪除偶數行

sed -n '1!G;h;$p' FILE    倒序輸出

相關文章
相關標籤/搜索