试了很久,期间学到很多东西
本次作业:
- :2,8s/\< four\>/4/g
- :/\(a[bc]\{2}\)[^abc]\+\1
请写出上面模式的作用
1.功能:
第2到8行的所有单词four替换为4, 像:four::这种可以, 但是fouraa这种不可以, 因为单词是fouraa不是four
BEFORE:
AFTER:
2,8s 2~8替换
\< 匹配单词词首
> 匹配单词词尾
g 全部替换
2.功能:
找到开头和结尾都含有abb/abc/acb/acc,并且中间含有一个及以上不是a/b/c的字符
变量替换:一个a,然后bb/bc/cc/cb,然后中间加上多个不是a/b/c的字母,最后再加上\1,表示把第一个括号内的内容再这里显示多一次,其实就是实现开始和结尾的内容一样,然后中间不能出现a/b/c,但是要注意,abbabb这种不可以,中间要有字符才行
另一个作业
删除偶数行
:g/^/+1d
(先匹配所有行,每次都删除掉奇数行的下一行,然后下一行是偶数行又变成奇数行):%s/\(^.*$\)\n^.*$/\1/g
删除奇数行
:g/^/+d|m
( |m是移动到当前行,位置没变,但是会取消掉刚才global的标记):%s/^.*$\n\(^.*$\)/\1/g
偶数行合并到奇数行
- 通过s命令奇数行和偶数行合并,以空格分割(变量替换)
:%s/\(^.*$\)\n\(^.*$\)/\1 \2
- 标记所有行,通过g和s命令将第一行的换行符删除
:g/\(^.*$\)\n\(^.*$\)/s//\1 \2
灵感来源..
下面这两句话是表达的一个意思,把well用good进行替换,上面那个同理,每次找到两行,进行标记然后删掉第一行的换行符,这样就可以合并起来了.
:%s/well/good/
:g/well/s//good/