vi正則表達式


搜索命令:/正則表達式

替換命令::s/正則表達式/替換字符串/選項

:%s/str1/str2/g   該命令中表示進入命令行模式,%表示對該文件所有行有效,s表示查找並替換,正則表達式str1表示被替換的內容,字符串str2表示替換后的內容,g表示整行有效

正則表達式字符匹配

 

 

 

 

 

 

 

 

 

 

 

實例替換

            

 

 實例刪除

3.刪除所有空行       

  :g/^$/d  (刪除沒有任何字符除了一個回車符的行)  

  :g/^[ \t]*$/d      (刪除有空格或是tab符號的所有行)                 

 

4.刪除含有某些字符的行     

  :g/ERROR/d  (刪除含有ERROR字符的所有行,d是刪除指令) 

5.刪除每行的所有前導空格        

  :%s/^ *//g  (后面的//之間沒有任何東西,也就是說不用任何東西去替換前面的前導空格,即刪除前導空格)

6.在文件中的每一行的開始插入 -> (或者換其他字符)

  :%s/^/->/g

7.在每一行的尾部加上一個句號(或者其他字符)

  :%s/$/。/g

8.刪除以數字開頭的行

  :%s/^\d.*$//g

9.刪除以abc三個字母一起開頭的行

  :%s/^[a|b|c].*$//g或者:%s/^abc.*$//g

10.刪除重復行

  :%s/^\(.*\)\n\1$/\1/g      將兩行重復行壓縮成一行(/^匹配到行首,.*匹配任意多個字符,\(.*\)相當於把之前匹配得到的字符保存下來,\1就表示保存的內容,\n\1表示換行之后再去匹配之前保存的字符,到這里就匹配了兩行,$接着到換行之后的行尾,之后的\1表示用前面保存的匹配到的第一行字符去替換匹配得到的兩行字符,這就相當於把兩行重復行壓縮成一行)

  :%s/^\(.*\)\(\n\1)\+$/\1/g       將多行重復行壓縮成一行  (\n\1)\+表示匹配任意多重復行

 

 實例對調

1.交換列表中所有連字符分隔的條目的順序

  如將ABC:XYZ對換成XYZ:ABC

  :%s/\(.*\):\(.*\)/\2:\1/g  \1表示第一次保存的內容,\2表示第二次保存的內容

函數式

格式:

  :s/str1/\=函數式

例1:將各行的id字符串替換為行號

  :%s/\<id\>/\=line(".")    \<id\>匹配的是單獨的詞id,而不是amid這類嵌在某個單詞里面的字符。line(".")是返回各行行號的一個函數。

例2:將每行開頭的單詞替換為(行號-10)

  :%s/^\<\w\+\>/\=(line(".")-10)

與Perl正則表達式的區別

 Sed用法(用來直接處理文件)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM