正则表达式在Linux系统中用处非常广
正则表达式功能强大,如果运用自如,则可以完成很多难以想象的操作。
gvim,perl,sed都会使用。
:%s/foo(\([^,]*\),\([^,]*\),\([^,]*\)/foo(\2,\1,\3)/g
gvim的正则表达式主要运用在搜索命令和替换命令
搜索命令 /正则表达式
替换命令 :/正则表达式/替换字符串/选项
元字符
·,任意字符
[abc] 匹配方括号中的任意一个字符。可以使用-表示字符范围,如[a-z0-9]匹配小写字母和阿拉伯数字。
[^abc] 在方括号内开头使用^符号,表示匹配除方括号中字符以外的任意字符。
\d 匹配阿拉伯数字,等同[0-9]
\D,阿拉伯数字之外的任意字符
\x,匹配十六进制数字,等同于[0-9A-Fa-f].
\X,匹配十六进制数字指纹的字符
\w,匹配单词字母,等同于[0-9A-Za-z_] 注意还有下划线
\W,匹配单词之外
\t,匹配字符
\s,匹配空白字符,等同于[\t]
\S,匹配非空白字符
特殊字符 用反斜杠去转义/
* ,匹配 星
.,匹配.
/,匹配/
\,匹配
[,匹配[
*匹配0-任意个
+匹配1-任意个
?匹配0-1个
{n,m}匹配n-m个
{n}匹配n个
{n,}匹配n-任意个
{,m}匹配0-m个
匹配位置
刀了符号 匹配行尾
^匹配行首
<单词词首
>单词词尾
把所有单词help或Help改为大写的HELP
:%s/[Hh]elp/HELP/g
使用单个空格替换一个或多个空格
:%s/ \+/ /g
删除所有的空行(只有一个回车字符)
:g/^$/d :g/^[\t]*[\t]*$/d
删除含有某些字符的行
:g/ERROR/d
删除重复行
:%s/^\(.*\)\n\1$/\1/g 将两行重复行压缩成一行 :%s/^\(.*\)\(\n\1\)\+$/\1/g 将多行重复行压缩成一行 \(xx\) 就是后面继续引用的\1,如果有多个\(xx\) 那么就用\2 \3来重复引用
交换列表中所有连字符分隔的条目的顺序
ABC:XYZ
:%s/\(.*\):\(.*\)/\2:\1/g
函数式 格式:: s/替换字符串/=函数式
将各行的id字符串替换为行号
:%s/\<id\>/\=line(".") (\<表示词首,\>表示词尾)
将每行开头的单词替换为(行号-10)
:%s/^\<\w\+\>/\=(line(".")-10)
sed 用来直接处理文件 (shell命令)
简单示例:
1.删除所有空行
sed 's/^$/d' *.txt *.txt 表示任意以.txt结尾的文件
2.删除所有只包含空格或者制表符的行
sed 's/^[]*$/d' price.txt
3.删除所有引号
sed '/" //g' price.txt
每日打卡:《周易》与跪哄女朋友hhhh,她最近很忙不需要哄睡服务hhh