`
cfyme
  • 浏览: 275002 次
  • 性别: 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

分享到:
评论

相关推荐

    大数据基础-Linux基础详解课程25.vi编辑命令-替换搜索取消命令.mp4

    大数据基础-Linux基础详解课程

    linux -vi-gcc 命令

    根据给定文件的信息,我们可以总结出关于 Linux 下的 vi 编辑器以及 gcc 编译器的一些关键知识点。 ### 一、vi 编辑器 #### 1. vi 编辑器模式 vi 编辑器有三种主要的工作模式: - **命令模式(Command Mode)**:...

    Linux 基础 008-vi命令-01-学习线路图.flv

    Linux 基础 008-vi命令-01-学习线路图.flv

    Linux vi替换字符串-lhrbest-ITPUB博客.mhtml

    Linux vi替换字符串-lhrbest-ITPUB博客.mhtmlLinux vi替换字符串-lhrbest-ITPUB博客.mhtml

    linux-vi命令

    Vi是Unix系统以及类Unix系统(如Linux)中最常用的文本编辑器之一。它最初由Bill Joy编写,并因此得名“vi”(Visual Editor)。Vi编辑器具有强大的文本编辑功能,能够帮助用户高效地完成文本文件的创建与修改工作。...

    vi命令全 vi 常用命令 unix vi 常用命令 vi 替换命令 unix vi 命令 vi 命令模式

    Vi 编辑器是 UNIX 操作系统中最流行的编辑器之一。它具有功能强大、灵活、易于使用的特点。Vi 编辑器可以在所有的 UNIX 操作系统(包括 Linux 操作系统)中随意编辑文件。 Vi 编辑器有两种基本模式:输入模式和指令...

    linux 常用命令 vi命令

    本文将主要聚焦于“vi”命令,一个强大的文本编辑器,以及与之相关的其他Linux命令。 **一、vi编辑器** vi(Visual Editor)是Linux和Unix系统中的一个全屏文本编辑器,它的全名是“Visual Editor for the Third ...

    xshell-linux命令

    xshell-linux命令 xshell 是一个功能强大的 Linux 命令行工具,提供了许多实用的命令来管理和操作 Linux 系统。本文将详细介绍 xshell 中的常用命令,包括文件管理、目录操作、文件查看、搜索和编辑等方面。 一、...

    Linux 命令全集 - - Linux 命令全集

    Linux是世界上最广泛使用的开源操作系统之一,其核心在于命令行界面,通过各种命令来管理系统、文件和进程。本文将深入探讨Linux命令全集中的关键知识点,帮助用户更好地理解和使用Linux。 1. **基础命令** - `ls`...

    linux 32位的jdk8,版本:jdk-8u221-linux-i586.rpm

    使用ftp工具将jdk-8u191-linux-i586.rpm传至linux系统,移动到/usr/local下,chmod 755 jdk-8u191-linux-i586.rpm 赋权,使用rpm -ivh jdk-8u191-linux-i586.rpm安装配置环境变量,vi /etc/profile,在末尾(就是最...

    Linux vi命令用法

    Linux中的vi编辑器是Unix系统中最古老的文本编辑器之一,其增强版VIM(Vi Improved)在现代Linux发行版中广泛使用。掌握vi的基本操作对于Linux用户来说至关重要,因为无论在哪个Unix环境中,几乎都能找到它的身影。...

    vi命令手册-linux高手必备手册

    在Linux系统中,`vi`编辑器是每一个Linux用户必须掌握的基本工具之一。它不仅功能强大而且使用灵活,适用于快速编辑文本文件。本手册将详细介绍`vi`编辑器的各种常用命令及其用法,帮助用户更高效地进行文本编辑工作...

    linux_vi 命令

    ### Linux Vi 命令详解 #### 一、Vi 编辑器基本概念 Vi(Visual editor)是一种广泛应用于Linux及Unix系统中的文本编辑器。它最初由Bill Joy开发,并随同BSD Unix一起发布,逐渐成为了许多用户进行文本编辑的标准...

    build-arm-linux-4.2.1

    ../configure --target=arm-linux --with-lib-path=/usr/local/arm-linux/lib:/usr/local/arm-linux/lib/be:/usr/local/arm-linux/lib/soft-float:/usr/local/arm-linux/lib/be/soft-float make make install ...

    linux基本命令以及linux下vi命令大全

    vi是Linux中最常用的文本编辑器之一,虽然初学者可能会觉得它的操作有些复杂,但一旦熟悉了,就会发现它非常强大和高效。 1. **启动vi**:在终端输入`vi`或`vim`(Vi IMproved,vi的增强版本)后跟文件名,即可打开...

    Linux教程-vi命令

    在Linux操作系统中,`vi`(Visual Editor的缩写)是一个强大的文本编辑器,它以其高效和灵活性著称。对于任何想要深入理解Linux系统管理的人来说,掌握`vi`的使用至关重要。`vi`编辑器分为两种模式:命令模式和插入...

    xshell-linux命令.pdf

    xshell-linux命令.pdf 本文档总结了 Linux 命令的基本使用方法,涵盖了文件管理、目录操作、文件查看、搜索和编辑等多方面的内容。 文件管理命令: * ls 命令:用于列出文件,包括隐藏文件。例如,ls -la 给出...

    03-linux命令简介.rar

    这篇教程主要聚焦于"03-linux命令简介",旨在为初学者提供一个基础的Linux命令学习平台。Linux命令行界面(CLI)是其核心部分,通过一系列指令进行交互,能高效地完成任务,而无需图形用户界面。 1. **Linux命令...

    linux下vi简单命令介绍

    ### Linux 下 vi 编辑器基础命令详解 #### 标题与描述概述 本文主要针对 Linux 系统下的 vi 编辑器进行简单的命令介绍,旨在帮助初学者快速上手并掌握基本操作方法。 #### 标签:Linux 下 vi 简单命令介绍 #### ...

Global site tag (gtag.js) - Google Analytics