vim查找/替换字符串

news/2024/7/21 15:02:33 标签: vim, linux

vi/vim 中可以使用 :s 命令来替换字符串。该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询。 
  :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/ 

删除文本中的^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 
  如果上述方法无用,则正确的解决办法是: [Page]
  。 tr -d \"\\r\" < src >dest
  。 tr -d \"\\015\" dest
  。 strings A>B
替换确认
         我们有很多时候会需要某个字符(串)在文章中某些位置出现时被替换,而其它位置不被替换的有选择的操作,这就需要用户来进行确认,vi的查找替换同样支持
       例如
      :s/vivian/sky/g 替换当前行所有 vivian 为 sky 
      在命令后面加上一个字母c就可以实现,即:s/vivian/sky/gc
      顾名思意,c是confirm的缩写
其它 
  利用 :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 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作

转自:http://www.cnblogs.com/GODYCA/archive/2013/02/22/2922840.html


http://www.niftyadmin.cn/n/1403442.html

相关文章

FPGA设计 问题一

今日在设计FPGA过程中发现真个设计在功能仿真时 全部正确&#xff0c;但是在烧些到FPGA里面以后 功能只能实现2次第3次以后就不对了。 和高手交流的对话如下&#xff1a; 和高手一 作者&#xff1a; 你好请教个问题&#xff0c;我在做FPGA时 仿真数据是对的 为什么烧到FPGA里数…

获取raspberrypi 2 源码

有人说玩pi没必要看源码&#xff0c;但个人平时习惯了看代码&#xff0c;不看看源码总觉得少了点什么。于是&#xff0c;就想把源码下载下来&#xff0c;但问题来了&#xff0c;pi的源码主要还是内核&#xff0c;但单单内核就已经一两G了&#xff0c;用平时拉取代码最常用的&am…

raspberrypi 2 共享电脑网络

买了个pi来玩&#xff0c;但是在公司宿舍只有一个路由器&#xff0c;而且多人一起使用&#xff0c;想把pi接到路由器连接网络还是有些麻烦。之前在网上看过可以把pi直接接到电脑的以太网口&#xff0c;共享电脑的wifi网络&#xff0c;试了一下&#xff0c;感觉非常容易&#xf…

建立时间与保持时间(两个寄存器的详细分析)(转)

建立时间与保持时间&#xff08;两个寄存器的详细分析&#xff09;&#xff08;转&#xff09; 时钟是整个电路最重要、最特殊的信 号&#xff0c;系统内大部分器件的动作 都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时 序逻辑状态出错&#x…

VNC远程登录树莓派的图形界面

安装VNC需要使用命令行。如果需要远程操作安装VNC&#xff0c;就必须通过SSH登录到命令行界面。 安装 树莓派命令行&#xff1a; 1sudo apt-get install tightvncserver安装好之后请一定先使用此命令设置一个VNC密码&#xff1a; 1vncpasswd&#xff08;先输入操作密码两次&…

Linux与好莱坞电影

Linux与好莱坞电影2009年底上映的《阿凡达》是电影特效的巅峰之作&#xff0c;除此之外还有《2012》每次观看之后总能让我们热血沸腾。 很早以前电影特效都是利用Irix技术&#xff0c;之后主流在SGI工作站上进行特效处理。但他们都要花费高昂的费用&#xff0c;加大了成本…

恢复git reset后的commit

1.git reflog 查看删除的历史2.找到要恢复的commit号&#xff0c;例如98ad4993.git reset 98ad499 转自&#xff1a;http://blog.csdn.net/mounter625/article/details/8757053

在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好?

在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好? 当然,这个没有唯一答案&#xff0c;相对于不同的系统,不同的要求,其得到的答案是不一样的,这里仅对像ICQ一类的发送聊天消息的情况作分析&#xff0c;对于其他情况&#xff0c;或许也能得到一点帮助: 首先…