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

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

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

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

[email protected]:~/zhouzx/Test> cat TestFile.txt

12345678907890

ABCDABCDEFGHIJ

12345^&*()()

98765432103210

abcdabcdefghij123123

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

[email protected]:~/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替换字符命令有非常多种,作为一名合格的软件开发project师。一定要熟练掌握常见字符替换命令的使用方法。

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426。欢迎关注!

)

时间: 2024-12-09 22:12:17

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

Linux下VI命令详细介绍

vi 是"Visual Interface" 的简称,它在Linux 上的地位就仿佛Edit 程序在DOS上一样.它可以执行输出.删除.查找.替换.块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的. vi 不是一个排版程序,它不象Word 或WPS 那样可以对字体.格式.段落等其他属性进行编排,它只是一个文本编辑程序. vi 没有菜单,只有命令,且命令繁多.限于篇幅,本文只介绍常用的命令. Vi 有三种基本工作模式:命令行模式,文本输入模式和末行模

【linux】linux下vi命令的使用

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

linux下oralcle11g使用edit命令默认调用vi编辑器

linux下oralcle11g使用edit命令默认调用vi编辑器: 在        $ORACLE_HOME/sqlplus/admin/glogin.sql   最后一行添加   define_editor=vi  即可. linux下oralcle11g使用edit命令默认调用vi编辑器,布布扣,bubuko.com

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: 插入,从目前光标所

在linux下的使用复制命令cp,不让出现“overwrite”(文件覆盖)提示的方法。(转)

在linux下的使用复制命令cp,不让出现"overwrite"(文件覆盖)提示的方法. 一般我们在使用cp命令时加上-f选项,希望不让出现"overwrite"的提示(文件覆盖的提示).如:# cp -rf sourcefile targetdir 或#cp -r -f sourcefile targetdir-r的意思是递归复制,也就是复制文件夹及其下所有文件.-f的意思是遇到同名的文件时不提示,直接覆盖. 但是为什么加上-f了,还出现"overwri

linux下 vi中[noeol]以及出现 feff 的问题

"uptime.py" [noeol] 69L, 2311C"system/uptime.py" 69L, 2312C 'noeol' 就是 'no end-of-line', 即“没有行末结束符” 使用cat -A 命令可以看到两个文件的不同之处在于最后一行是否有换行符 cat -A uptime.pyif __name__ == '__main__':$    uptime = uptime()$    print(uptime)$[email protecte

linux下神奇的script命令

script 是一个神奇命令,script 能够将终端的会话过程录制下来,然后使用 scriptreplay 就可以将其录制的结果播放给他人观看.script 的好处就在于你在终端中的所有操作.敲过的命令和打印出的结果它都可以原原本本地进行录制.可以应用于教学.演示.审计. 一般来说,script 和 scriptreplay 在 Linux 发行版中都有默认安装. script -t 2>demo.time -a demo.his 开始录像,ctrl+d或者exit结束 scriptrepla

linux下MySQL安装登录及操作

linux下MySQL安装登录及操作 二.安装Mysql 1.下载MySQL的安装文件 安装MySQL需要下面两个文件: MySQL-server-4.0.16-0.i386.rpm MySQL-client-4.0.16-0.i386.rpm 下载地址为:http://www.mysql.com/downloads/mysql-4.0.html, 打开此网页,下拉网页找到“Linux x86 RPM downloads”项,找到“Server”和“Client programs”项,下载需要的

Linux下实现MySQL多端口多实例运行

声明 作者:昨夜星辰 博客:http://yestreenstars.blog.51cto.com/ 本文由本人创作,如需转载,请注明出处,谢谢合作! 目的 Linux下实现MySQL多端口多实例运行. 主要操作 创建/etc/my_multi.cnf文件 vi /etc/my_multi.cnf 内容如下(注意!如果你的MySQL是通过源代码方式安装,请根据实际情况更改mysqld和mysqladmin这两项,还有就是注意更改root的密码.) [mysqld_multi] mysqld =