正则表达式
\* 匹配任意字符串(换行符不行)
^1234$ ^ 匹配字符串开头,$ 匹配结尾,所以本表达式严格匹配 1234
^1234|5678$ | 是或的意思,表示匹配 1234 或 5|
^123[0-9]$ [ ] 表式匹配其中的任意一个字符,其中的 - 是省略的方式,表示 0 到 9,它等于 [0123456789] 也就是说它会匹配 1230,1231,1232 ... 1239
^123/d$ 同上,/d 等于 [0-9]
^123/d+$ + 号表示1个或多个它前面的字符,因为 + 前面是 /d,所以它就等于1个或多个数字,实际上, 它匹配任何以123开头的至少4位数的数字串,如1230,12300,12311,123456789等
^123/d*$ *号与+号的不同在于,它匹配0个或多个前面的字符。 所以,它匹配以123开头的至少3位数的数字串,如 123,123789
^123 跟上面一样,由于没有结尾的$,它匹配任何以123开头的数字串,但除此之外,它还匹配后面是字母的情况,如 123abc
123$ 匹配任何以123结尾的字符串
^123/d{5}$ {5}表示精确匹配5位,包含它前面的一个字符。在这里,它匹配以123开头的所有8位的电话号码
^123(/d+)$ ( )在匹配中不起作用,跟^123/d+是相同的,但它对匹配结果有作用, 匹配结果中除123之外的数字都将存储在$1这个变量中,在下一步使用
^123(/d)(/d+)$ 如果用它跟12345678匹配,则匹配成功,结果是 $1 = 4, $2 = 5678
^(\+){0,1}[0-9]*)$ 匹配+开头,最多匹配1个+,最少是不匹配+,后面匹配任意数字
{} 匹配的次数 {12}匹配前面的内容12次,{1,5}匹配最少1次,最多5次,最少优先,{3,}匹配最少3次以上
vim的快捷操作
vim的视图化模式(ctrl+v),可以选中多行内容,进行统一删除(选中后按d键)或者插入(选中后按I键,之后插入内容,再按esc键)
vim中进行批量替换
:%s #old#new#g
三剑客awk、sed、grep
awk '{if($2 > 1000){print $0}}' #可以判断多次,输出多行内容,$0是当前行的全部内容
awk的match函数,匹配字符串并返回匹配结果的位置,没有则返回0
echo "hello world" | awk '{match($0,//world/);print RSTART}'
awk 'gsub(",",""){print}' 文件名 #把逗号替换为空
sed -i 's#:#\n#g' file.txt #把冒号替换成换行
sed -i "s/^/expire /g" file.txt #在每行开头加入expire
sed -i "s/$/ 100/g" file.txt #在每行末尾加入100
awk -F , '{print "hello",$1,"world",$2}' file.txt ------> hello $1 world $2 #双引号括起来的内容会在输出时添加到每一行,","逗号输出时以空格形式
awk -F'test1' '{print $1}' file1 #awk的-F可以指定每行内容里的某个字段,进行指定输出
sed -i "2a -Djava.rmi.server.hostname=xxxx" catalina.sh #在文件的第2行的下一行添加内容,即第3行