VIM和sed 替换字符串方法
目录
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 | 功能同上 |
从上述替换命令可以看到:
- g 放在命令末尾,表示对搜索字符串的每次出现进行替换;
- 不加 g,表示只对搜索字符串的首次出现进行替换;
- 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 替换字符串方法相关推荐
- Vim正则表达式匹配替换字符串
/*********************************************************************** Vim正则表达式匹配替换字符串* 说明:* 用Vim用 ...
- linux替换字符串 正则,Linux Shell使用grep、sed 常用正则提取、替换字符串方法
grep常用于文本搜索.通过自定义的模式(pattern),筛选出使用者需要的文本内容.除了有grep,还有egrep和fgrep.其中egrep = grep –E,而fgrep则是不支持正则表达式 ...
- VIM查找和替换字符串命令详解(持续更新中...)
vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询. :s/vivian/sky/ 替换当前行第一个 vivian ...
- Vim中如何替换字符串
替换字符串 全局,替换字符串: 命令模式 :% s/old/new/g old,new不需要双引号,g表示全局,如果没有g就是每一行的第一个会被改变 例子: % s/test_shm_tool.c/$ ...
- vim查找或替换字符串后,取消高亮
:set nohlserach 或者 :nohl 目前不清楚这两个的区别
- Linux Vim替换字符串的一些方法小结
Linux Vim替换字符串的一些方法小结 使用Linux环境进行开发工作的程序猿经常有编辑器之争,是vim牛还是emacs棒.二者都是程序猿的开发神器,不管用好哪一个都会使你的工作事半功倍.本文重点 ...
- linux vi查找字符串查找字符串,vim查找字符串的方法_vim查找替换的方法
vim是什么? Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是自由软件. Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自 ...
- Linux——批量查找替换方法(VIM和sed)
1.VIM命令 当前行进行替换:s/XXX/YYY/gXXX是需要替换的字符串,YYY是替换后的字符串. 全局替换:% s/XXX/YYY/g. 对指定部分进行替换用V进入visual模式,再进行:s ...
- linux shell 替换字符串的几种方法,变量替换${},sed,awk
变量a是一个带空格的字符串,现在用"hdpusr400"替换变量a中的"hduser302": [liusiyi@localhost ~]$ echo $a - ...
- shell 替换字符串的几种方法,变量替换${},sed,awk
变量a是一个带空格的字符串,现在用"hdpusr400"替换变量a中的"hduser302": 1 [liusiyi@localhost ~]$ echo $a ...
最新文章
- Idea--使用Idea调试设置
- 判断一个点是否在RotatedRect中
- 解决Mac安装tesserocr报错问题 Failed building wheel for
- 笔记-项目管理ITTO-高项/PMP第五版-全
- 综合布线智能配线系统发展趋势
- 二十、欢迎来到掘金量化
- Android构建流程——篇六
- 【Vue】Docker + Nginx 部署 Vue3.0 项目
- zabbix中常用到的几个key:
- oracle 数据泵 详解
- 商品搜索——输入联想|智能提示探索
- python 字典转对象
- QA:rustup-init error: caused by: 拒绝访问。 (os error 5)出现权限拒绝
- 简单的权限管理系统——数据库设计和实现
- springboot2 druid监控控制台去掉下面的图片广告和powered by
- 崇高文本_25个崇高的网站在2017年下载免费的图片
- 微服务拆分之道,几条策略和坚持的原则
- python选题背景_论文的选题背景及意义-样例
- 活体检测综述 Deep Learning for Face Anti-Spoofing: A Survey 阅读记录
- 能用三角函数表示声音吗——正弦模型综述
热门文章
- python源码剖析-笔记2
- 马尔科夫模型 Markov Model
- 线性代数矩阵论——行列式的一些性质推论及Cramer法则
- RayData大数据可视化教程(2)——动画制作基础和设置为本地资源库
- Stata | 初试
- 谷歌浏览器一直显示弹框登陆代理解决方法
- 安卓游戏服务器修改,【httpcather/Thor】课程二,用抓包工具修改微信小游戏,还能保存到服务器...
- mysql 内连接查询三表数据_数据库三表连接查询怎么做
- Python-win32com模块
- 计算机输入输出设计原则,交互设计精髓4中的104条设计原则