您的位置:首页 > 其它

批量替换,多行删除,复制,移动

2009-12-12 14:52 316 查看
批量搜索目录下所有文件中内容

find * | xargs grep "tihuan"

:n1,n2 m n3
移动n1-n2行(包括n1,n2)到n3行之下;

:n1,n2 co n3
复制n1-n2行(包括n1,n2)到n3行之下;

:n1,n2 d
删除n1-n2行(包括n1,n2)行;

vi替换使用规则:

:g/s1/s/s2/s3/g

第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s3替换

s表示替换,s2是要被替换的字符串,他可以和s1相同(如果相同的话用//代替),s3是替换字符串

在vi界面下使用命令 :%s#/usr/bin#/bin#g 可以把文件中所有路径/usr/bin换成/bin。其中“#”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。

s/str1/str2/
用字符串 str2 替换行中首次出现的字符串 str1

:s/str1/str2/g
用字符串 str2 替换行中所有出现的字符串 str1

:s/str1/str2/gi
用字符串 str2 替换行中所有出现的字符串 str1,在查找时不区分大小写

: .,$ s/str1/str2/g


用字符串 str2 替换正文当前行到末尾
所有出现的字符串 str1

:1,$ s/str1/str2/g
用字符串 str2 替换正文中所有出现
的字符串 str1

:g/str1/s//str2/g 功能同上

:%s/str1/str2/g
功能同上


:g/foobar/s/bar/baz/g 首先搜寻foobar,然后把它变成foobaz. 它没有改变 jailbars, 而其他的一些命令可能会改变jailbars.

:%s/str1/str2/gc 替换全文所有符合的单词并让用户确认



:g/str1/s//str2/gi 用字符串 str2 替换正文中所有出现的字符串 str1,在查找时不区分大小写,此命令没有下面的严格,经测试显示,不能完全做到在查找时忽略大小写

:%s/str1/str2/gi 用字符串 str2 替换正文中所有出现的字符串 str1,在查找时不区分大小写,在查找时可以完全做到忽略大小写

:10,20s/^/ / 将第10行至第20行资料的最前面插入5个空白

:%s/$/str/g 在整个文件每一行的行尾添加“str”

:3,7s/str1/str2/g


仅替换文件中的第3行到第7行
中的“str1”成“str2”

:%s/:.*//g
删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分(前提是已经打开了/etc/passwd文件)从上述替换命令可以看到:g
放在命令末尾,表示对搜索字符串在光标所在行的每次出现进行替换;不加 g,表示只对搜索字符串的首次出现进行替换;g
放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。上面的命令中的/只是起分隔作用,也可以用其他的字符代替。另外,可以在正规式里用/
(和/)来剥离一个序列。例如:

有些字符域使用得很频繁. Vim 为这些字符域提供了预定义域:

项 匹配 相当于

/d 数字 [0-9]

/D 非数字 [^0-9]

/x 十六进制数字 [0-9a-fA-F]

/X 非十六进制数字 [^0-9a-fA-F]

/s 空白字符 [ ] ( 和 )

/S 非空白字符 [^ ] (非 和 )

/l 小写字母 [a-z]

/L 非小写字母 [^a-z]

/u 大写字母 [A-Z]

/U 非大写字母 [^A-Z]

& 所有查找时匹配到的东西

/[Ee] 更改大小写的选择区域的终点

:%s//s/+$// 删除行尾多余的空格

命令前面指明范围是“%”,所以这会作用于整个文件。“substitute”命令的样式是“/s/+$”。这表示行末($)一个或者多个(/+)空格(/s)。:g//(foo/)/(bar/)/s//2//1baz/g 将foobar替换成foobaz
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: