`
cfyme
  • 浏览: 279980 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

《vi中的替换艺术》-linux命令五分钟系列之十一

 
阅读更多

vi方面的内容不知道分类到哪里好,就放到《Linux命令五分钟系列》里吧!

今天编程,关于栈的一个小例子,其间我需要把”S.”替换为”S->”(替换不包括双引号)。

其实这个不难,不过我觉得应该总结一下vi里的替换技术了,以备以后查阅。

 

1

所有替换方案都要在冒号“:”状态下书写。

2

如果想将abc替换为xyz,那么就这样

:s/abc/xyz/

不过要特别注意,这个替换只局限于光标所在当前行,而且更糟糕的是它只替换当前行的第一个匹配项。

即,如果此行内容为I write abc, I read xyz and abc. 那么替换后的结果为I write xyz, I read xyz and abc.

3

如果想将一行里的所有匹配都进行替换,那么就这样:

:s/abc/xyz/g

4

如果想将一行里所有的”S.”替换为”S->”,那么就这样:

:s/S\./S->/g

例如,此行S.abc and S->bcd and S.aaa and S..abc为,替换后为S->abc and S->bcd and S->aaa and S->.abc

此处因为点号“.”为特殊匹配符,所以如果想匹配点号,就需要用\放在点号前面,表示取消点号的特殊意义。

5

如果要扩大替换范围,则可以用行数来限制:

如果要替换全文的S.为S->,则:

:1,$s/S\./S->/g

可以看出在s前面加上m,n则表示行的范围,1表示第一行,$表示最后一行。当然你完全可以指定其他行数。

此处,m或n可以用特殊符号”.”或”$”代表,”.”代表当前行,”$”代表最后一行

如果是确定为全文替换,那么可以用%来代替1,$,即:%s/S\./S->/g

6

你可能会发现如果我要匹配一个http://roclinux.cn/index.php会很麻烦阿 因为//符号和/符号都会把替换搞乱。此时,你完全可以用#或者其他任何符号来替换/,如s/abc/xyz/可以替换为s#abc#xyz#,或者s!abc!xyz!都是可以的!这个是不是很神奇,如果你了解perl的话,你会发现更多非常非常灵活的技巧。呵呵

如此行内容为:http://roclinux.cn/index.php and http:/uuw/faf

使用如下替换命令(此处使用了#):

:s#http://roclinux\.cn/index\.php#http://www\.sohu\.com#

替换后为:http://www.sohu.com and http:/uuw/faf

7

如果我希望把具有日期格式(XXXX-XX-XX)的字符串两侧加上一对单引号,即2008-07-01变成’2008-07-01’,可以这样做。

例如,原来文件内容为:

aaa 2008-07-01 bbb
ccc 2008-07-12 aaa

使用如下替换命令:

:1,$s/\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\)/’\1’/g

替换后为:

aaa ‘2008-07-01′ bbb
ccc ‘2008-07-12′ aaa

这个替换命令比较复杂,里面有这几个知识点:

第一个知识点:[0-9]表示0到9之间的任一个数字

第二个知识点:\{n\}表示将此符号前面的元素重复n遍,所以[0-9]\{4\}就表示一个四位数的数字

第三个知识点:如果在匹配方案中用到了\(\)则表示要暂存这个匹配内容,而\1就表示要替换为暂存的匹配内容,你仔细看看我给出替换命令,就可以懂了,我们匹配的如果是2008-07-01,那么加了括号后就会被暂存,而在后面的\1处就会被替换过来,外面再加一对引号,就OK了!

 

转载:http://roclinux.cn/?p=700

分享到:
评论

相关推荐

    vi常用命令汇总-2019-11-05.pdf

    在计算机操作领域,vi是一个非常重要的文本编辑器,尤其在Linux操作系统中被广泛使用。掌握vi编辑器中的常用命令对于提高文本处理的效率有着重要意义。本篇内容将对vi编辑器的常用命令进行汇总,并结合教育内容进行...

    Linux内核设计的艺术.pdf

    ### Linux内核设计的艺术之Vi编辑器操作指南 在深入探讨Vi编辑器的使用方法之前,我们先简单了解一下《Linux内核设计的艺术》这本书。该书主要讲述了Linux内核的设计原理和技术细节,对于想要深入了解Linux操作系统...

    VI命令详解

    ### VI命令详解:掌握高效文本编辑的艺术 #### 引言 在IT行业,尤其是在系统管理和软件开发领域,熟练掌握文本编辑器是基本功之一。在众多编辑器中,`vi`(Visual Editor)以其强大的功能和灵活性,在Unix/Linux...

    Linux常用命令大全

    它的命令行界面提供了高效且灵活的操作方式,而熟练掌握Linux命令则是提升工作效率的关键。本文将深入解析"Linux常用命令大全",涵盖将近400个命令的使用、参数、功能及范例,旨在帮助用户理解并运用这丰富的命令...

    linux-Vim中有针对性的线性运动和编辑

    在Linux开发环境中,Vim(Vi Improved)是一个强大的文本编辑器,因其高效的操作方式而备受程序员喜爱。"有针对性的线性运动和编辑"是Vim中的一个重要概念,它涉及到如何快速、准确地在文本中移动光标以及进行编辑...

    新东方的linux培训2

    熟练运用Linux命令是每位开发者的基本功。例如,“ls”用于列出目录下的文件,“cd”用于切换目录,“mkdir”用于创建目录,“rm”用于删除文件或目录,“cp”和“mv”分别用于复制和移动文件或目录。此外,“vi”或...

    Vim用户手册

    - **Vim的定义**:Vim是一款功能强大的源代码编辑器,最初基于Vi(Visual Editor)开发而来,广泛应用于各种操作系统环境中,特别是在Unix/Linux系统中非常流行。 - **学习方法**:根据译者的建议,学习Vim最重要的...

    vim使用手册

    Vim(Vi Improved)源于经典的vi编辑器,经过数十年的迭代,已成为程序员和系统管理员手中的利器。本手册旨在引领读者从初学者成长为精通Vim的高手,通过实践操作而非单纯理论学习,掌握Vim的精髓。 #### Vim的三重...

    Pro Vim英文版

    **Vim——高级文本编辑器的艺术** Vim,全称Vi IMproved,是Bill Joy在1976年创建的Vi编辑器的增强版本。它是一款功能强大的、高度可配置的文本编辑器,广泛用于程序员、系统管理员以及任何对效率有高要求的用户。...

Global site tag (gtag.js) - Google Analytics