vi/vim 查找替换

本文详细介绍了vi/vim编辑器中的替换命令:s的多种使用方法,包括替换单个、多个实例,以及如何进行全局替换等高级应用。还介绍了如何处理特殊字符如斜杠和回车符,并提供了在Unix系统中过滤Windows文件换行符的具体步骤。

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

 

From:http://wzgyantai.blogbus.com/logs/28117977.html

第1关:vi/vim基本用法 100 学习内容 参考答案 记录 评论 任务描述 相关知识 启动vi/vim编辑器 退出vi/vim编辑器。 编程要求 测试说明 任务描述 通常情况下我们在图形化界面对文件编辑操作步骤为:(1)创建一个文件,(2)打开文件进行编辑,(3)保存编辑内容,(4)关闭文件。当我们工作在Linux命令行模式时,我们如何对一个文件进行编辑操作,此时我们就可以使用vi/vim命令来对文件编辑,而依赖于图形界面。 本关任务:在命令行模式下,使用vi/vim命令来查看已存在文件,并保存退出vi/vim。 相关知识 viUnix操作系统中最常用的全屏编辑器,Linux中常用的是vi的加强版vimvimvi完全兼容。在Linux系统中,vivim是完全等价的两条命令。 vi/vim编辑器可以执行输入、删除、查找替换、块操作等众多文件操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑器程序没有的工程。vi/vim编辑器以命令行的方式处理文件,尽管不如图形化处理方式直观,但它具有操作速度快、功能全面等优点。另外,vi/vim不是一个排版程序,它不像Word或WPS那样可以对字体、格式、段落等其他属性进行设置,它只是一个文本编辑器程序。 启动vi/vim编辑器 vi/vim的基本格式如下: vi [option] [filename...] 或 vim [option] [filename...] 其中,[option]是选项,[filename]是需要编辑的一个或多个文件名。 案例演示1: 启动vi/vim编辑器,同时打开文件testFile,可以使用如下命令: vi testFile 或 vim testFile [请在右侧“命令行”里直接体验] 因为当前目录下没有testFile文件,所以此时打开的文件是空,并且在底部一行显示的是打开的文件名以及当前被打开的文件状态,因为是新建的文件,所以显示的是"testFile" [New File]标识。 退出vi/vim编辑器。 案例演示2: 退出vi/vim编辑器,同时保存新创建的文件testFile,具体操作如下所示: 1.当往新文件中输入了内容的时候 先按一下键盘 Esc 键,再输入“:wq”命令后回车,即可保存当前文件并退出vi/vim编辑器; 2.当没往新文件中输入内容的时候 直接输入“:wq”命令后回车,即可保存当前文件并退出vi/vim编辑器; [请在右侧“命令行”里直接体验] 按下回车键后,我们将退出了当前vi/vim编辑器,如果不想保存testFile文件而是只想退出vi/vim编辑器,则我们输入:q命令后回车即可。 [请在右侧“命令行”里直接体验] 编程要求 本关任务是学会如何启动和退出vi/vim编辑器。 注意:在执行本关任务前,首先执行如下命令来初始化任务环境 rm -fr /root/oldFile > /dev/null 2>&1 rm -fr /root/.oldFile > /dev/null 2>&1 echo "welcome to Vi/Vim" > /root/oldFile && echo "welcome to Vi/Vim" > /root/.oldFile 具体编程要求如下: 使用vi/vim编辑器查看当前目录下已存在文件oldFile,然后保存退出vi/vim编辑器; 测试说明 本关的测试需要用户在右侧的命令行下完成,用户只需将需要完成的命令在右侧命令行下直接操作即可,然后点击评测按钮,平台会自动验证用户是否按照要求去检测结果。 开始你的任务吧,祝你成功! 如果你觉得这一关的内容对你有帮助,请你在下面点赞。
最新发布
10-25
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值