`

vi 的查找替换

阅读更多

vi替换命令用法详解
 
: ranges /pat1/pat2/g
其中
: 这是Vi 的命令执行界面。
range 是命令执行范围的指定: 百分号(% )表示所有行
点(. )表示当前行
美元($ )表示最末行

例如:
10,20 表示第10 到20 行,
.,$ 表示当前行到最后一行,.
+2,$-5 表示当前行后两行直到全文的倒数第五行

s 表示其后是一个替换命令。
pat1 这是要查找的一个正则表达式
pat2 这是希望把匹配串变成的模式的正则表达式

g 可选标志,带这个标志表示替换将针对行中每个匹配的串进行,否则则只替换行中第一个匹配串。
:/string #向下查找
:?stirng   # 向上查找

--------------------------------------------------下述为举例说明:

 

vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。

 

:s/vivian/sky/ 替换当前行第一个 vivian 为 sky

:s/vivian/sky/g 替换当前行所有 vivian 为 sky

 

:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky

n 为数字,若 n 为 .,表示从当前行开始到最后一行

 

:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

 

可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/

 

:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

 

1.:s/vivian/sky/ 替换当前行第一个 vivian 为 sky

:s/vivian/sky/g 替换当前行所有 vivian 为 sky

 

2. :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky

(n 为数字,若 n 为 .,表示从当前行开始到最后一行)

 

3. :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

 

4. 可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/

 

5. 删除文本中的^M

问题描述:对于换行,window下用回车换行(0A0D)来表示,Linux下是回车(0A)来表示。这样,将window上的文件拷到Unix上用时,总会有个^M.请写个用在unix下的过滤windows文件的换行符(0D)的shell或c程序。

· 使用命令:cat filename1 | tr -d “^V^M” > newfile;

· 使用命令:sed -e “s/^V^M//” filename > outputfilename。需要注意的是在1、2两种方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必须要手工进行输入,而不是粘贴。

· 在vi中处理:首先使用vi打开文件,然后按ESC键,接着输入命令:%s/^V^M//。

· :%s/^M$//g

如果上述方法无用,则正确的解决办法是:

· tr -d "\r" < src >dest

· tr -d "\015" dest

· strings A>B

 

6. 其它

利用 :s 命令可以实现字符串的替换。具体的用法包括:

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

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

:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1

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

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

从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索

字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

 

分享到:
评论

相关推荐

    VI高级命令用法,用于替换

    这个命令是VI编辑器中全局替换命令的一个实例,用于在整个文档中查找并替换特定模式。这里,“`%s`”表示对整个文档(%)进行搜索替换操作;“`#`”作为分隔符,将命令分为三部分:“`old_pattern`”(被替换的旧...

    Word常用查找与替换实例及方法

    Word常用查找与替换实例及方法 可以大幅提高排版效率! 不看绝对后悔,建议下了留着备用 另:别人写的,不记得从哪里下的了: 目录 Word查找与替换•ASCII字符集代码 I Word查找栏代码•通配符一览表 II Word...

    在linux文件中查找并替换

    本文将详细介绍在Linux环境下进行文件查找与替换的方法,包括常用的命令工具如`sed`和`vi`(或`vim`)等,并通过具体示例加以解释。 #### 二、sed 命令 **sed** 是一个强大的流编辑器,用于处理文本文件中的数据流...

    vi编辑器进行vi练习

    - **命令模式**:在这个模式下,你可以移动光标、删除文本、复制粘贴、查找替换等,但不能直接输入文本。 - **插入模式**:在命令模式下按下`i`、`a`、`o`等键可以进入插入模式,此时可以直接在光标位置输入文本。...

    vi快捷键示意图及vi命令详解

    3. **底行模式**:在命令模式下输入`:`, `Esc`键后可以进入底行模式,这里可以执行保存、退出、查找替换等全局操作。 **vi的常用快捷键和命令** 1. **移动光标**:`h`向左,`j`向下,`k`向上,`l`向右;`w`跳到下...

    vI.rar_vi

    - 查找与替换:`/word`查找"word",`n`下一个,`N`上一个。`:s/old/new/g`将当前行所有"old"替换为"new",`:g/old/s//new/g`全局替换。 3. **插入模式** - 进入插入模式:在命令模式下按`i`、`a`、`o`分别在光标...

    学习vi和vim编辑器.pdf_vim实用_vi_vim_

    3. **底行模式**:通过`:`键进入,用于执行保存、查找替换、退出等命令。 **四、基本操作** 1. **打开文件**:`vim 文件名` 命令用于打开一个文件进行编辑。 2. **移动光标**:`h`左移,`j`下移,`k`上移,`l`右移...

    aix vi aix vi

    #### 查找与替换 - `/string`:从当前位置开始向文件尾部搜索包含string的行。 - `?string`:从当前位置开始向文件头部搜索包含string的行。 - `n`:查找下一个匹配项。 - `N`:查找上一个匹配项。 - `:%s/old/new/...

    Linux_vi.rar_vi

    3. **底行模式**:通过在命令模式下输入`:`, `:`后可以执行保存、退出、查找替换等操作。 ### 命令模式操作 - **移动光标**:使用`h`向左,`j`向下,`k`向上,`l`向右移动光标;`0`移到行首,`$`移到行尾。 - **...

    vi.rar_vi

    3. **查找替换**:`:s` 命令结合正则表达式实现查找替换。 4. **批量操作**:`:n1,n2 command` 在行号n1到n2之间执行command。 **六、vi的高级特性** 1. **可视模式**:在命令模式下,使用`v`进入可视模式,可选...

    vi命令入门详解.txt

    Vi具备强大的文本操作能力,包括但不限于输出、删除、查找、替换、块操作等功能。此外,用户还可以根据个人需求定制Vi,使其更加符合自己的使用习惯,这是许多其他编辑器所不具备的功能。 值得注意的是,Vi并非一个...

    vi_memento

    VI还支持手动查找并替换字符串,可以通过“:s”命令进行一次替换,然后使用“n”查找下一个匹配项并再次替换。 以上提到的命令是VI编辑器在日常工作中使用最频繁的命令集合,无论是进行Linux系统管理还是编写程序...

    vi编辑器使用技巧总结

    五、查找及替换命令 * /pattern : 从光标开始处向文件尾搜索 pattern * ?pattern : 从光标开始处向文件首搜索 pattern * n/N : 在同一方向/反方向上重复上一次搜索命令 * % : 查找配对的括号 * :s/p1/p2/g : 将当前...

    vi使用手册 (vi 命令 操作技巧)

    VI支持在文本中查找和替换字符串: - `/pattern`:从当前位置向文件末尾查找`pattern`。 - `?pattern`:从当前位置向文件开始查找`pattern`。 - `n`:重复上一次查找命令,继续查找下一个匹配项。 - `N`:反向重复...

    linux实验报告vi编辑器的使用.pdf

    SEARCH 注: 反向查找,按shift+n键,把光标移动到下一个符合条件的替换::s /SEARCH/REPLACE/g 注:把当前光标所处的行中的SEARCH单词,替换成 REPLACE,并把所有SEARCH高亮显示;:%s /SEARCH/REPLACE 注: 把文档中...

    windows下vi编辑器

    2. **高效编辑**:VI提供了一套丰富的命令集,如删除、复制、粘贴、查找替换等,这些操作往往只需要一个或几个按键即可完成,极大地提高了编程效率。 3. **宏录制和回放**:用户可以录制一系列操作作为宏,然后在...

    solaris中vi的使用方法

    vi编辑器支持强大的文本查找和替换功能,通过`/string`和`?string`命令分别从光标位置向下和向上查找字符串,`n`和`N`命令则用于定位下一个或上一个匹配项。全局查找和替换可通过`:s/old/new/g`命令实现。 #### ...

    vi使用操作总结 vi的光标移动

    vi 编辑器中的查找和替换命令包括: * f[x]、F[x]、t[x]、T[x]:在行上查找字符 * /[string]、?[string]:全文查找字符串 * r、R、s、S:替换字符、行 * : [LineNum],[LineNums]/[old string]/[new string]/g:...

    vi练习题(收集+转)

    3. **末行模式**:在命令模式下输入`:`, `:`后可以执行保存、退出、查找替换等操作。 **二、基本操作** 1. **打开与退出**:`vi 文件名`打开文件,`:q`退出(未修改);`:q!`强制退出(即使有未保存的修改);`:wq...

Global site tag (gtag.js) - Google Analytics