在vi中使用模式匹配

来源:互联网 发布:费米估算法 维基百科 编辑:程序博客网 时间:2024/05/22 00:33

转自:http://hi.baidu.com/ilotus_y/blog/item/8a9167090edcb985d1581bb7.html

 

(1) [[:alnum:]]   文字数字字符
(2) [[:graph:]]   非空字符(非空格、控制字符)
(3) [[:print:]]   和非空字符一样,但还包括空格
(4) [[:space:]]   所有白空字符(新行、空格、制表符)
(5) c(confirm)    替换前显示提示符要求用户确认
(6) g(globe)      表示对所有(一行中所有)符合条件的字符进行替换.如果没有g只替换一行中第一个匹配的字符.
(7) [:digit:]     是0-9的另一种表达式,要使用这个类就必须把它放在方括号内,使得它成为可以识别的正则表达式.0-9本身并不是正则表达式,但是[0-9]就是; 同样[:digit:]只有被写成[[:digit:]]时才是正则表达式.


用vi如何将^M去掉? ^M为ctrl_v ctrl_m
-----------------------------------------------------
:%s/^M/ /g (命令模式下)


删除空行(只含有回车)
-----------------------------------------------------
:g/^$/d


删除所有空行
-----------------------------------------------------
:g/^[^I| ]*$/d
说明: ^I表示Tab
(空行中含有空格或Tab或者只有回车或者既有空格又有Tab)


将一行开头的若干空格替换成Tab(哈哈,Makefile文件中大有用处)
-----------------------------------------------------

:%s/^[ ]\+/^I/
说明:
(1) 直接使用Tab键即可输入^I;
如果你是无法输入Tab键(Tab键被当作了快捷键),用ctrl+V ctrl+I输入。
(2)
    egrep '3+' datafile
    grep -E '3+' datafile
    grep '3\+' datafile
打印所有包含一个或者多个3的行


Change every word in a file to uppercase/lowercase(大写
/小写):
-----------------------------------------------------
    :%s/.*/\U&/
    :%s/.*/\L&/


将字符之间的空格去掉:
-----------------------------------------------------
:%s/\([^ ]\) \([^ ]\)/\1\2/g
曾 晓 龙 --> 曾晓龙

:%s/\(love\)able/\1rs/
\(...\)    标记后面用到的匹配字符,最多可以使用9个标签,第一个标签是模板最左边的部分.这里的\1代表love
loveable --> lovers



在文档的某一列统一添加一个 |
-----------------------------------------------------
(1) 首先在每一行的末尾添加足够多的空格
:%s/$/                  /
(2) 在每一行的第50列添加一个
|
:%s/\(.\{50}\)/\1|/
(3) 去掉每一行末尾多余的空格
:%s/ $//


 

原创粉丝点击