vi 替换

news/2024/7/3 1:13:28

为什么80%的码农都做不了架构师?>>>   hot3.png

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 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

转载于:https://my.oschina.net/kursk/blog/7898


http://lihuaxi.xjx100.cn/news/272084.html

相关文章

arduino小车前进代码_基于Arduino操纵杆扩展板Funduino制作机器人小车

在本篇文章中&#xff0c;我们将制作一款两轮遥控机器人小车&#xff0c;使用的组件包含nRF24L01模块、Arduino UNO和Funduino操纵杆扩展板组成的控制部分&#xff0c;Arduino nano开发板以及和一个用于控制直流电机的L298N电机驱动器。nRF24L01和L298N电机驱动器为机器人小车提…

缺失值填写

空值填充算法 简介 造成数据缺失的原因 现实世界中的数据异常杂乱&#xff0c;属性值缺失的情况经常发全甚至是不可避免的。造成数据缺失的原因是多方面的&#xff1a; 信息暂时无法获取。例如在医疗数据库中&#xff0c;并非所有病人的所有临床检验结果都能在给定的时间内得到…

好用到爆的 Java 技巧

点击上方“方志朋”&#xff0c;选择“设为星标”回复”666“获取新整理的面试文章来自&#xff1a;Lrwin的技术博客链接&#xff1a;http://lrwinx.github.io/2017/03/04/细思极恐-你真的会写java吗/本文不是一个吹嘘的文章&#xff0c;不会讲很多高深的架构&#xff0c;相反&…

程序猿惯用口头禅与内心真实 OS,快来看看你中招没?

作者 | 他二哥来源 | 腾讯技术工程滑动查看真实内心 OS滑动查看真实内心 OS滑动查看真实内心 OS滑动查看真实内心 OS滑动查看真实内心 OS滑动查看真实内心 OS滑动查看真实内心 OS滑动查看真实内心 OS滑动查看真实内心 OS【end】◆精彩推荐◆推荐阅读百万人学AI&#xff1a;CSDN…

如何根据原理图画封装_生物水处理专用消泡剂是如何根据生物水处理工艺原理进行消泡的?...

生物水处理专用消泡剂是如何根据生物水处理工艺原理进行消泡的&#xff1f;水处理消泡剂厂家给出了专业的分析。随着可持续和环保的发展&#xff0c;对于工业污水处理提出了更高的要求。很多生产工业都会采用生物水处理技术&#xff0c;提高循环水的使用。因此生物水处理技术被…

我是如何在3个月内写出博士论文的?

点击上方“视学算法”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达作者丨James Hayton来源丨学位与写作编辑丨极市平台在看这篇文章之前请注意&#xff1a;我的博士论文花了我三年半的全职研究时间来收集数据&#xff0c;本文所指的三个月只…

自定义Android注解Part3:绑定

上一节我们已经将自动生成注解代码部分介绍完毕&#xff0c;今天这篇文章是自定义Android注解系列的最后一篇文章。希望大家这一路走来有所收获。 经过前面的了解&#xff0c;我们三大部分&#xff1a;butterknife-annotations、butterknife-compiler与butterknife-bind。现在就…

python保存路径_Python IDLE的默认保存路径?

在OS X上&#xff0c;如果启动IDLE.app&#xff08;例如&#xff0c;通过双击或使用open(1)&#xff09;&#xff0c;默认目录将硬连接到~/Documents。如果要永久更改默认值&#xff0c;则需要编辑IDLE.app应用程序包中的文件idlemain.py&#xff1b;根据已安装的Python&#x…