Linux下vi替换字符命令操作实例

http://blog.csdn.net/zhouzhaoxiong1227/article/details/28657665

在Linux下的开发中,经常涉及到对文件中的字符进行处理,其中,对字符的替换操作也是非常的频繁。

        本文以一个实际的文件为例,详细介绍了Linux下常用的vi替换字符命令,为相关的开发工作提供给了参考。

 

        本文中被操作的文件为TestFile.txt,其中的内容如下:

       
zhou@linux:~/zhouzx/Test>
cat TestFile.txt

          12345678907890

          ABCDABCDEFGHIJ

          12345^&*()()

          98765432103210

          abcdabcdefghij123123

 

       先进入vi编辑模式,如下:

       zhou@linux:~/zhouzx/Test>
vi TestFile.txt

 

        依次执行以下替换命令(注意:每条命令都要以冒号“:”开头),其中替换部分用红色字体标注。

        1) :n,$s/str1/str2/

        将第n行开始到最后一行中每一行的第一个str1替换为str2。

        例如,在TestFile.txt文件的vi编辑模式下执行:

        :2,$s/123/321/

        文件内容变为:

       
12345678907890

          ABCDABCDEFGHIJ

          32145^&*()()

          98765432103210

          abcdabcdefghij321123

       可见,只有第三行和第五行的第一个“123”变成了“321”。第一行的“123”没有被替换,因为命令是从第二行开始执行的。

 

        2) :n,$s/str1/str2/g

        将第n行开始到最后一行中每一行所有str1替换为str2。

        紧接着上一条命令执行:

        :2,$s/3210/1234/g

        文件内容变为:

        12345678907890

          ABCDABCDEFGHIJ

          32145^&*()()

          98765412341234

          abcdabcdefghij321123

        可见,从第二行开始的所有的“3210”都变成了“1234”。

 

        3) :%s/str1/str2/

        将每一行的第一个str1替换为str2。

        紧接着上一条命令执行:

        :%s/123/321/

        文件内容变为:

       
32145678907890

          ABCDABCDEFGHIJ

          32145^&*()()

          98765432141234

          abcdabcdefghij321321

        可见,每一行的第一个“123”都变成了“321”。

 

        4) :%s/str1/str2/g

        将每一行中所有str1替换为 str2。

        紧接着上一条命令执行:

        :%s/890/098/g

        文件内容变为:

       
32145670987098

          ABCDABCDEFGHIJ

          32145^&*()()

          98765432141234

          abcdabcdefghij321321

        可见,每一行的所有“890”都变成了“098”。

 

        5) :s/str1/str2/

        将行中首次出现的字符串str1用字符串str2替换。

        紧接着上一条命令执行:

        :s/098/890/

        文件内容变为:

       
32145678907098

          ABCDABCDEFGHIJ

          32145^&*()()

          98765432141234

          abcdabcdefghij321321

        可见,只有第一行的第一个“098”变成了“890”。

 

        6) :s/str1/str2/g

        将行中所有出现的字符串str1用字符串str2替换。

        紧接着上一条命令执行:

        :s/321/123/g

        文件内容变为:

       
12345678907098

          ABCDABCDEFGHIJ

          32145^&*()()

          98765432141234

          abcdabcdefghij321321

        可见,第一行的所有“321”变成了“123”。

 

        7) :.,$ s/str1/str2/g

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

        紧接着上一条命令执行:

         :.,$ s/1/2/g

        文件内容变为:

       
22345678907098

          ABCDABCDEFGHIJ

          32245^&*()()

          98765432242234

          abcdabcdefghij322322

        可见,所有的“1”都变成了“2”。

 

        8) :1,$ s/str1/str2/g

        将正文中所有出现的字符串str1用字符串str2替换。

        紧接着上一条命令执行:

        :1,$ s/22/33/g

        文件内容变为:

       
33345678907098

          ABCDABCDEFGHIJ

          33345^&*()()

          98765433343334

          abcdabcdefghij333333

        可见,所有的“22”都变成了“33”。

 

        9) :g/str1/s//str2/g

        将正文中所有出现的字符串str1用字符串str2替换。

        紧接着上一条命令执行:

        :g/33/s//22/g

        文件内容变为:

       
22345678907098

          ABCDABCDEFGHIJ

          22345^&*()()

          98765422342234

          abcdabcdefghij222222

        可见,所有的“33”都变成了“22”。

 

        从以上替换命令的执行可以看出:

        1) 所有命令都要以冒号“:”开头。

        2) 所有命令既可以替换单个的字符,也可以替换字符串。

        3) 如果“g”放在命令末尾,表示对搜索字符串的每次出现进行替换;如果不加“g”,表示只对搜索字符串的首次出现进行替换;而如果“g”放在了命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

 

        Linux下vi替换字符命令有很多种,作为一名合格的软件开发工程师,一定要熟练掌握常见字符替换命令的用法。

 

时间: 2024-12-28 20:49:08

Linux下vi替换字符命令操作实例的相关文章

Linux下vi替换字符命令例子

在Linux下的开发中,经常涉及到对文件中的字符进行处理,其中,对字符的替换操作也是非常的频繁. 本文以一个实际的文件为例,详细介绍了Linux下常用的vi替换字符命令,为相关的开发工作提供给了参考. 本文中被操作的文件为TestFile.txt,其中的内容如下: zhou@linux:~/zhouzx/Test> cat TestFile.txt 12345678907890 ABCDABCDEFGHIJ 12345^&*()() 98765432103210 abcdabcdefghij

Linux下vi编辑器的命令模式和编辑模式有什么区别?

问题描述 Linux下vi编辑器的命令模式和编辑模式有什么区别? 解决方案 编辑模式下可以输入和删除文本,与 windows 的常规编辑器的行为一样.命令模式下,可以方便地进行文本操作(包括批量的文本操作).比如说,删除命令d.dw 可以删除从当前光标开始的一个单词, dd 可以删除当前光标所在的行.解决方案二:基础问题还是先去学习学习

Linux下Vi替换命令用法练习

环境 RedHat Linux 9 + VWWare 8.0 + SSH 3.2.9 问题 假设有一个CSV(comma separated value)文件,里面有一些我们需要的信息 ,但是格式却有问题,目前数据的列顺序是: 姓名,公司名,州名缩写,邮政 编码,现在我们希望讲这些数据重新组 织,以便在我们的某个软件中使用, 需要的格式为:姓名,州名缩写-邮政编码,公司名. 也就是说,我们要调整 列顺序,还要合并两个列来构成一个新列.另外, 我们的软件不能接受逗号前后 面有任何空格(包括空格和制

Linux下Vi/Vim使用笔记

Linux下Vi/Vim使用笔记 启动和关闭vim vi 打开 Vi/Vim 打开 Vi/Vim 并加载文件 <file> vi <file>  ZQ 无条件退出 :q! 无条件退出 ZZ 存盘并退出 :wq 存盘并退出 vim编辑器的三种模式:一般模式.编辑模式和命令行模式在一般模式中可以进行删除.复制和粘贴的功能,但是无法编辑文件内容. 从一般模式切换到编辑模式可以按下i.I.o.O.a.A.r.R键. 注意区分当前是INSERT还是REPLACE模式! i: 插入,从目前光标

利用uniread 解决 Linux下的SQL*Plus 命令行历史回调功能

解决|命令行 利用uniread 解决 Linux下的SQL*Plus 命令行历史回调功能 作者: Fenng 大家知道, 在 Windows 平台 命令行中的 SQL*Plus 有命令行历史回调的功能,在SQL*Plus工具下面,可以利用键盘的"向上向下"箭头键对命令行的进行回调.而在Linux上则没有该功能(虽然 Shell 可以做到这一点,但是 SQL*Plus 不可以). 而该功能对于CLI爱好者来说几乎是不可缺的,不知道为什么 Oracle 不把这个功能加进来.不得而知了.

Linux下的目录创建命令使用实践

[文章摘要]        本文以实际的C源程序为例子,介绍了Linux下的目录创建命令(mkdir)的使用方法,为相关开发工作的开展提供了有益的参考. [关键词]        C语言  Linux  目录创建  makefile  开发   一.mkdir命令简介         mkdir命令用来创建指定名称的目录,其命令格式为:mkdir [选项] 目录...        其中,[选项]可以是"-m"."-p"或"-v".此外,目录名是

Linux下编译安装php libevent扩展实例

 这篇文章主要介绍了Linux下编译安装php libevent扩展实例,本文着重讲解了编译过程中一个错误解决方法,需要的朋友可以参考下     原本想尝试一下PHP编写高性能网络服务,需要安装libevent扩展,没想到让人很费了点脑袋 先下载libevent扩展: http://pecl.php.net/package/libevent 解压后,开始编译 代码如下: $ cd libevent-version $ /usr/local/php/bin/phpize $ ./configure

并行计算-linux 下用p,V操作对两线程的操作

问题描述 linux 下用p,V操作对两线程的操作 计算/打印线程的同步:两个线程共享公共变量a线程1负责计算(+1)线程2负责打印 解决方案 我不太理解你问的问题的意图!公共变量a,在满足什么条件下,两线程的开始分配工作,你没有说清楚我假设你a==1时生产者工作,当a==2时,生产完成,线程2(即消费线程)开始工作即,打印a那么代码如下: #include <stdio.h>#include <stdlib.h>#include <pthread.h>pthread_

linux下vi命令大全

进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 移动光标类命令 h :光标