Shell中sed使用
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
-i选项:直接作用源文件,源文件将被修改。
sed命令和选项:
| a\ | 在当前行后添加一行或多行 |
| c\ | 用新文本替换当前行中的文本 |
| d | 删除行 |
| i\ | 在当前行之前插入文本 |
| h | 把模式空间的内容复制到暂存缓冲区 |
| H | 把模式空间的内容添加到缓冲区 |
| g | 取出暂存缓冲区的内容,将其复制到模式缓冲区 |
| G | 取出暂存缓冲区的内容,将其追加到模式缓冲区 |
| l | 列出非打印字符 |
| p | 打印行 |
| n | 读入下一行输入,并从下一条而不是第一条命令对其处理 |
| q | 结束或退出sed |
| r | 从文件中读取输入行 |
| ! | 对所选行以外的行应用所有命令 |
| s | 用一个字符串替换另外一个字符串 |
替换标志:
| g | 在行内进行全局替换 |
| p | 打印行 |
| w | 将行写入文件 |
| x | 交换暂存缓冲区和模式空间的内容 |
| y | 将字符转换成另外一个字符 |
sed例子:
打印:p命令
| sed ‘/abc/p’ file |
打印file中包含abc的行。默认情况sed把所有行都打印到屏幕,如果某行匹配到模式,则把该行另外再打印一遍 |
| sed -n ‘/abc/p’ file | 和上面一样,只是去掉了sed的默认行为,只会打印匹配的行 |
删除:d命令
| sed ‘3,$d’ file | 删除从第3行到最后一行的内容。 |
| sed ‘$d’ file | 删除最后一行的内容 |
| sed ‘/abc/d’ | 删除包含abc的行。 |
| sed ‘3d’ file | 删除第三行的内容 |
替换:s命令
| sed ‘s/abc/def/g’ file | 把行内的所有abc替换成def,如果没有g,则只替换行内的第一个abc |
| sed -n ‘s/abc/def/p’ file | 只打印发生替换的那些行 |
| sed ‘s/abc/&def/’ file | 在所有的abc后面添加def(&表示匹配的内容) |
| sed -n ‘s/abc/def/gp’ file | 把所有的abc替换成def,并打印发生替换的那些行 |
| sed ‘s#abc#def#g’ file | 把所有的abc替换成def,跟在替换s后面的字符就是查找串和 替换串之间的分割字符,本例中试# |
指定行的范围:逗号
| sed -n ‘/abc/,/def/p’ file | 打印模式abc到def的行 |
| sed -n ‘5/,/def/p’ file | 打印从第五行到包含def行之间的行。 |
| sed /abd/,/def/s/aaa/bbb/g | 修改从模式abc到模式def之间的行,把aaa替换成def |
多重编辑-e
| sed -e ‘1,3d’ -e ‘s/abc/def/g’ file | 删除1-3行,然后把其余行的abc替换成def |
读文件:r命令
| sed ‘/abc/r newfile’ file | 在包含abc的行后读入newfile的内容 |
写文件:w命令
| sed ‘/abc/w newfile’ file | 在包含abc的行写入newfile |
追加:a命令
| sed ‘/abc/a\def’ file | 在包含abc的行后新起一行,写入def |
插入:i命令
| sed ‘/abc/i\def’ file | 在包含abc的行前新起一行,写入def |
修改:c命令
| sed ‘/abc/c\def’ file | 在包含abc的行替换成def,旧文本被覆盖 |
读取下一行:n命令
| sed ‘/abc/{n ; s/aaa/bbb/g;}’ file | 读取包含abc的行的下一行,替换aaa为bbb |
转换:y命令
| sed ‘y/abc/ABC’ file | 将a替换成A,b替换成B,c替换成C(正则表达式元字符不起作用) |
退出:q命令
| sed ‘/abc/{ s/aaa/bbb/ ;q; }’ file | 在某行包含了abc,把aaa替换成bbb,然后退出sed。 |
暂存和取用:h命令(把模式行存储到暂存缓冲区)和g(取出暂存缓冲区的行并覆盖模式缓冲区)G(取出临时缓冲区的行)命令
h和g是复制行为(覆盖),H和G表示追加。
| sed -e ‘/abc/h’ -e ‘$G’ file | 包含abc的行通过h命令保存到暂存缓冲区,在第二条命令汇中,sed读到最后一行$时,G命令从暂存缓冲区中读取一行,追加到模式缓冲区的后面。即所有包含abc的行的最后一行被复制到文件末尾。 |
| sed -e ‘/abc/{h; d;}’ -e ‘/def/{g; }’ file |
包含abc的行会移到包含def的行上,并进行覆盖。 |
暂存和互换:h和x命令
| sed -e ‘/abc/h’ -e ‘/def/x’ file |
包含abc的行会被换成def的行。 |
Shell中sed使用的更多相关文章
- shell中sed的简单使用
sed命令行格式为: sed [-nefri] ‘command’ 输入文本/文件 常用选项: -n∶取消默认的输出,使用安静(silent)模式.在一 ...
- shell中sed用法
简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
- python3-file的修改实现类似shell中sed的功能
# Auther: Aaron Fan '''思路:目的是为了修改yesterday这个文件,但是因为无法直接去修改这个文件,所以需要先把修改好的内容写入高yesterday.new这个文件中,然后再 ...
- shell中sed命令
sed -i '/cd ${LDIR_DEST}\/webextend\/pc && ln -s \/hard\/www_winclient\/bboxpc.exe ./a\ \tcd ...
- 在shell中使用sed命令替换/为\/
sed命令相关: https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html https://www.cnblogs.com/D ...
- linux下shell脚本中sed命令的用法
先来给一个案例: #将old.sql文件中的符号“|”替换为“,”,并保存到test.sql文件中 sed "s/|/,/g" "old.sql"> te ...
- linux中sed的用法【转】
sed命令行格式为: sed [-nefri] ‘command’ 输入文本/文件 常用选项: -n∶取消默认的输出,使用安静(silent)模式.在一般 sed 的 ...
- 任督二脉之Shell中的正则表达式
VBird说学习Linux,掌握了Shell和正则就相当于打通了任督二脉,此后能力的成长才会突飞猛进. Shell的基础学习之前已经总结了一篇博客:http://www.cnblogs.com/jyz ...
- Makefile Shell 脚本;sed命令
1. 在Makefile中想使用shell脚本,需要添加"@"符号,例如: @if [ -d xxx ]; then \ //-d 判 ...
随机推荐
- linux下安装svn1.7
转自 https://blog.csdn.net/u011752559/article/details/11559573?locationNum=11&fps=1 1.下载svn安装包 wge ...
- 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史(转载)
转载 https://zhuanlan.zhihu.com/p/49271699 首发于深度学习前沿笔记 写文章 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史 张 ...
- python开发基础之数据类型、字符编码、文件操作
一.知识点 1.身份运算: 2.现在计算机系统通用的字符编码工作方式:在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码.用记事本编辑的时候,从文件 ...
- 爬虫 requests模块的其他用法 抽屉网线程池回调爬取+保存实例,gihub登陆实例
requests模块的其他用法 #通常我们在发送请求时都需要带上请求头,请求头是将自身伪装成浏览器的关键,常见的有用的请求头如下 Host Referer #大型网站通常都会根据该参数判断请求的来源 ...
- Python———pandas数据处理
pandas模块 更高级的数据分析工具基于NumPy构建包含Series和DataFrame两种数据结构,以及相应方法 调用方法:from pandas import Series, DataFra ...
- Font Awesome,一套绝佳的图标字体库和CSS框架
http://fontawesome.dashgame.com/ http://www.runoob.com/font-awesome/fontawesome-tutorial.html Font A ...
- elasticsearch的CPU居高不下的问题
最近项目中遇到一个令人头疼的问题,毕竟因为工作需要刚学elasticsearch,也没有去关注elasticsearch的配置问题,安装好默认把它当做数据库一样去使用,这导致接下来的项目直接挂掉... ...
- vapor 生成xcode project 产生的错误解决方式
运行vapor xcode时报错: Could not generate Xcode project: error: terminated(72): xcrun --sdk macosx --find ...
- Unity 5.x动态加载光照信息(所有坑已踩)
能搜到这的应该是被新的烘焙系统坑了少时间,4.x到5.x美术必须重新烘焙,关于美术的没什么说的,只有---重新烘焙! 新的烘焙系统,为了兼容5.x的多场景编辑功能,将烘焙信息从mesh全部挪到了一个中 ...
- 20175305张天钰《java程序设计》第五周学习总结
<java程序设计>第五周学习总结 接口与实现 知识小点: (1)用Arrays.sort方法对所有实现Comparable接口的对象进行排序 (2)接口体现了has-a关系,继承体现了i ...