搜索命令:/正則表達式
替換命令::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用法(用來直接處理文件)