目录

VIM替换字符串方法

1. 基本替换

2.可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

3. 文件中删除^M

4. 其它技巧

sed命令替换字符串

VIM替换字符串方法

1. 基本替换

:s/str1/str2/ 替换当前行第一个str1为str2
:s/str1/str2/g 替换当前行所有str1为str2
:n,$s/str1/str2/ 替换第 n 行开始到最后一行中每一行的第一个str1为str2
:n,$s/str1/str2/g

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

(n 为数字,若 n 为 .,表示从当前行开始到最后一行)

:%s/str1/str2/ (等同于 :g/str1/s//str2/) 替换每一行的第一个str1为str2
:%s/str1/str2/g (等同于 :g/str1/s//str2/g) 替换每一行中所有str1为str2

2.可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

:s#str1/#str2/# 替换当前行第一个str1/ 为str2/
:%s+/str11/str12/+/str21/str22+ (使用+ 来 替换 / ): /str11/str12/替换成/str21/str22/

3. 文件中删除^M

问题描述:对于换行,Windows下用回车换行(0A0D)来表示,Linux下是回车(0A)来表示。这样,将window上的文件拷到Unix上用时,总会有个^M,请写个用在Unix下的过滤Windows文件的换行符(0D)的shell或c程序。有两种方法可以完成此目的:
(1)使用命令:cat oldfilename | tr -d “^V^M” > newfilename
(2)使用命令:sed -e “s/^V^M//” oldfilename > newfilename
需要注意的是在1、2两种方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必须要手工进行输入,而不是粘贴。
在vim中处理:首先使用vim打开文件,然后按ESC键,接着输入命令:
:%s/^V^M//
:%s/^M$//g
如果上述方法无用,则正确的解决办法是:
(1) tr -d "\r" < old_file_name > new_file_name 或者 cat oldfilename | tr -d "\r" > new_file_name
(2) tr -d "\015" < old_file_name > new_file_name或者 cat oldfilename | tr -d "\015" > new_file_name
strings A>B

4. 其它技巧

利用 :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 功能同上

从上述替换命令可以看到:

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

sed命令替换字符串

1. sed替换的基本语法为:
    sed 's/原字符串/替换字符串/'

单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义。

2. 单引号”‘”是没有办法用反斜线”\”转义的,这时候只要把命令中的单引号改为双引号就行了,例如:

sed "s/原字符串包含'/替换字符串包含'/"    //要处理的字符包含单引号

3. 命令中的三根斜线分隔符可以换成别的符号,这在要替换的内容有较多斜线是较为方便,只需要紧跟s定义即可,例如换成问号”?”:

sed 's?原字符串?替换字符串?'                //自定义分隔符为问号

4. 可以在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个,例如:

sed 's/原字符串/替换字符串/g'                //替换所有匹配关键字

5. 一些特殊字符的使用

”^”表示行首

“$”符号如果在引号中表示行尾,但是在引号外却表示末行(最后一行)

# 注意这里的 " & " 符号,如果没有 “&”,就会直接将匹配到的字符串替换掉
sed 's/^/添加的头部&/g'       #在所有行首添加
sed 's/$/&添加的尾部/g'       #在所有行末添加
sed '2s/原字符串/替换字符串/g'   #替换第2行
sed '$s/原字符串/替换字符串/g'      #替换最后一行
sed '2,5s/原字符串/替换字符串/g'   #替换2到5行
sed '2,$s/原字符串/替换字符串/g'   #替换2到最后一行

6. 批量替换字符串

sed -i "s/查找字段/替换字段/g"   `grep 查找字段 -rl 路径`
sed -i "s/oldstring/newstring/g"   `grep oldstring -rl yourdir`

7. sed处理过的输出是直接输出到屏幕上的,使用参数”i”直接在文件中替换。
sed -i 's/原字符串/替换字符串/g' filename    # 替换文件中的所有匹配项

8. 多个替换可以在同一条命令中执行,用分号”;”分隔,其格式为:
sed 's/^/添加的头部&/g;s/$/&添加的尾部/g'   # 同时执行两个替换规则

VIM和sed 替换字符串方法相关推荐

  1. Vim正则表达式匹配替换字符串

    /*********************************************************************** Vim正则表达式匹配替换字符串* 说明:* 用Vim用 ...

  2. linux替换字符串 正则,Linux Shell使用grep、sed 常用正则提取、替换字符串方法

    grep常用于文本搜索.通过自定义的模式(pattern),筛选出使用者需要的文本内容.除了有grep,还有egrep和fgrep.其中egrep = grep –E,而fgrep则是不支持正则表达式 ...

  3. VIM查找和替换字符串命令详解(持续更新中...)

    vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询.    :s/vivian/sky/ 替换当前行第一个 vivian ...

  4. Vim中如何替换字符串

    替换字符串 全局,替换字符串: 命令模式 :% s/old/new/g old,new不需要双引号,g表示全局,如果没有g就是每一行的第一个会被改变 例子: % s/test_shm_tool.c/$ ...

  5. vim查找或替换字符串后,取消高亮

    :set nohlserach 或者 :nohl 目前不清楚这两个的区别

  6. Linux Vim替换字符串的一些方法小结

    Linux Vim替换字符串的一些方法小结 使用Linux环境进行开发工作的程序猿经常有编辑器之争,是vim牛还是emacs棒.二者都是程序猿的开发神器,不管用好哪一个都会使你的工作事半功倍.本文重点 ...

  7. linux vi查找字符串查找字符串,vim查找字符串的方法_vim查找替换的方法

    vim是什么? Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是自由软件. Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自 ...

  8. Linux——批量查找替换方法(VIM和sed)

    1.VIM命令 当前行进行替换:s/XXX/YYY/gXXX是需要替换的字符串,YYY是替换后的字符串. 全局替换:% s/XXX/YYY/g. 对指定部分进行替换用V进入visual模式,再进行:s ...

  9. linux shell 替换字符串的几种方法,变量替换${},sed,awk

    变量a是一个带空格的字符串,现在用"hdpusr400"替换变量a中的"hduser302": [liusiyi@localhost ~]$ echo $a - ...

  10. shell 替换字符串的几种方法,变量替换${},sed,awk

    变量a是一个带空格的字符串,现在用"hdpusr400"替换变量a中的"hduser302": 1 [liusiyi@localhost ~]$ echo $a ...

最新文章

  1. Idea--使用Idea调试设置
  2. 判断一个点是否在RotatedRect中
  3. 解决Mac安装tesserocr报错问题 Failed building wheel for
  4. 笔记-项目管理ITTO-高项/PMP第五版-全
  5. 综合布线智能配线系统发展趋势
  6. 二十、欢迎来到掘金量化
  7. Android构建流程——篇六
  8. 【Vue】Docker + Nginx 部署 Vue3.0 项目
  9. zabbix中常用到的几个key:
  10. oracle 数据泵 详解
  11. 商品搜索——输入联想|智能提示探索
  12. python 字典转对象
  13. QA:rustup-init error: caused by: 拒绝访问。 (os error 5)出现权限拒绝
  14. 简单的权限管理系统——数据库设计和实现
  15. springboot2 druid监控控制台去掉下面的图片广告和powered by
  16. 崇高文本_25个崇高的网站在2017年下载免费的图片
  17. 微服务拆分之道,几条策略和坚持的原则
  18. python选题背景_论文的选题背景及意义-样例
  19. 活体检测综述 Deep Learning for Face Anti-Spoofing: A Survey 阅读记录
  20. 能用三角函数表示声音吗——正弦模型综述

热门文章

  1. python源码剖析-笔记2
  2. 马尔科夫模型 Markov Model
  3. 线性代数矩阵论——行列式的一些性质推论及Cramer法则
  4. RayData大数据可视化教程(2)——动画制作基础和设置为本地资源库
  5. Stata | 初试
  6. 谷歌浏览器一直显示弹框登陆代理解决方法
  7. 安卓游戏服务器修改,【httpcather/Thor】课程二,用抓包工具修改微信小游戏,还能保存到服务器...
  8. mysql 内连接查询三表数据_数据库三表连接查询怎么做
  9. Python-win32com模块
  10. 计算机输入输出设计原则,交互设计精髓4中的104条设计原则