sed 笔记
sed是一个非交互式文本编辑器,他可以对文本文件和标准输入进行编辑,标准输入可以是来自键盘,文件重定向,字符串,变量甚至来自于管道的文本。sed适用于以下三种场合:
- 编辑相对交互式文本编辑器而言太大的文件。
- 编辑命令太复杂,在交互式文本编辑器中难以输入的情况。
- 对文件扫描一遍,但是需要执行多个编辑函数的情况
调用sed有三种方式,一种为she'll命令行方式,另外两种是将sed命令写入脚本,然后执行该脚本文件。三种方式归纳如下:
- shell命令行输入命令调用sed,格式为:
sed [选项] 'sed命令' 输入文件
- 将sed命令插入脚本文件后,通过sed命令调用它,格式为:
sed [选项] -f sed脚本文件 输入文件
- 将sed命令插入脚本后,最常用的方法是将该脚本设置为可执行文件,然后直接执行该脚本,格式为:
./sed脚本文件 输入文件
sed命令选项及意义:
| 选项 | 意义 |
| -n | 不打印所有行到标准输出 |
| -e | 表示将下一个字符串解析为sed编辑命令,如果只传递一个编辑命令给sed,-e选项可以省略 |
| -f | 表示正在调用sed脚本文件 |
sed通常由定位文本行和sed编辑命令两部分组成,sed提供以下两种方式定位文本:
- 使用行号,指定一行或者行号范围
- 使用正则表达式
下表是sed定位文本的方法
| 选项 | 意义 |
| x | x为指定行号 |
| x,y | 指定从x到y的行号范围 |
| /patten/ | 查询包含模式的行 |
| /pattern/pattern/ | 查询包含两个模式的行 |
| /pattern/,x | 从与pattern匹配的行到x行号之间的行 |
| x,/pattern/ | 从x号行到与pattern匹配行之间的行 |
| x,y! | 查询不包括x,y行号的行 |
下面将在示例中说明sed的命令选项的意义,新建一个名为sedtest的文件,内容如下:(测试过程中可能会有修改)
this is a test file for sed
Test is real important
what i want to say is: haha
nobody is god except allah.
This is very IMPORTYANT
what you want to say is:goodbye!
where to go?
I don't know!
this cool!
- -n选项
#第一条命令,带-n选项,只打印第一行
[root@linuxTest ~]# sed -n '1p' sedtest
this is a test file for sed
#第二条命令,不带-n,不仅打印第一行,还打印输入文件的全部内容
[root@linuxTest ~]# sed '1p' sedtest
this is a test file for sed
this is a test file for sed
Test is real important
what i want to say is: haha
nobody is god except allah.
This is very IMPORTYANT
#打印行范围
root@linuxTest ~]# sed -n '2,6p' sedtest
Test is real important
what i want to say is: haha
nobody is god except allah.
This is very IMPORTYANT
- -e选项
#sed编辑命令“=”用来匹配is关键字的行号,如果希望行号和行内容都打印出来,则需要传递p和=两个编辑命令
[root@linuxTest ~]# sed -n -e '/is/=' -e '/is/p' sedtest this is a test file for sed Test is real important what i want to say is: haha
-s选项
#使用替换模式替换相应模式
#p选项,只替换每行第一个符合条件的文本
[root@linuxTest ~]# sed -n 's/is/IS/p' sedtest
thIS is a test file for sed
Test IS real important
what i want to say IS: haha
nobody IS god except allah.
ThIS is very IMPORTYANT
what you want to say IS:goodbye!
thIS cool!
#2p,如果每行含有两个及两个以上目标文本,则只替换每行第二个符合条件的文本
[root@linuxTest ~]# sed -n 's/is/IS/2p' sedtest
this IS a test file for sed
This IS very IMPORTYANT
#pg,如果该行中含有目标文本,则不论几个都替换。
[root@linuxTest ~]# sed -n 's/is/IS/pg' sedtest
thIS IS a test file for sed
Test IS real important
what i want to say IS: haha
nobody IS god except allah.
ThIS IS very IMPORTYANT
what you want to say IS:goodbye!
thIS cool!
#w,替换后,保存文本到另外一个文件
[root@linuxTest ~]# sed -n 's/is/IS/gw output' sedtest
sed 笔记的更多相关文章
- sed笔记
sed是stream editor缩写,表示流编辑器,它是一款文本处理工具,可以配合正则表达式进行文本替换. 1.使用正则表达式匹配并进行文本中的字符串替换 *使用-i选项可以直接将替换结果应用到源文 ...
- shell编程sed笔记
源文件的内容 <modules> <module name="provider"> <!--发布模式--> <bds_mode/> ...
- 【Linux】sed笔记
sed - stream editor for filtering and transforming text(用于过滤和转换文本的SED流编辑器),主要是以行为单位进行处理,可以将数据行进行替换. ...
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...
- Sed&awk笔记之sed篇
http://blog.csdn.net/a81895898/article/details/8482387 Sed是什么 <sed and awk>一书中(1.2 A Stream Ed ...
- Linux实战教学笔记12:linux三剑客之sed命令精讲
第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...
- Sed&awk笔记之sed篇(转)
Sed是什么 <sed and awk>一书中(1.2 A Stream Editor)是这样解释的: Sed is a "non-interactive" strea ...
- sed、grep、awk -- 三剑客笔记记录
sed常用操作笔记 1.删除文件最后一行: sed -i '$d' filename 2.递归替换内容:sed -i 's/内容A/内容B/g' filename sed -i "s/S ...
- Linux sed 使用笔记
sed 工具使用笔记 Linux中经常需要对一些超大的文本文件进行操作,例如 GB 级别的 CSV.TXT.LOG 文件,如果使用 vi 或者 vim 编辑器操作会非常慢且卡,此时 sed 工具或许可 ...
随机推荐
- Python之小练习
1.1 2 3 4 5 6 7 8能组成多少个不同的两位数? count = 0for i in range(1,9): for V in range(1,9): if i != V: count+= ...
- js补零方法
方法如下: function getZero(num, index) { if((parseInt(num) != 0) && (typeof num == "undefin ...
- java-Calendar类
1.Calendar类的概述和获取日期的方法 * A:Calendar类的概述 * Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR ...
- 一篇关于CountDownLatch的好文章
CountDownLatch简介 CountDownLatch是一种java.util.concurrent包下一个同步工具类,它允许一个或多个线程等待直到在其他线程操作执行完成. 使用场景: 在开发 ...
- SQLServer调WebService & 错误解决:请求格式无法识别
(sqlServer 2008 + VS2010) 首先,对服务器进行配置. sp_configure ; GO RECONFIGURE; GO sp_configure ; GO RECONFIGU ...
- lua tasklib 之lumen 分析
sched.sleep分析 sleep会填充M.running_task.waitds数据表示当前task需要等待,最后yield出去到主线程 M.sleep = function (timeout) ...
- c 链表和动态内存分配
兜兜转转又用到了c.c的一些基本却忘记的差不多了(笑哭)!! 动态内存分配 当malloc完将返回的指针类型强制转换成想要的类型后,指针中存有该指针的数据结构,而分配的内存恰好可用于该数据结构. 链表 ...
- unity的一些tips
主要是我知乎上回答的一个关于unity的tip,备忘. 说说我所看到unity相关的,不好的习惯: 1 尽量不要在Awake(), start()等函数内加入业务逻辑的初始化代码.首先无法简便的直接启 ...
- C#编程经验-选择结构和循环结构
选择结构:if elseif else ifswitch 循环结构:whiledo whilefor()foreach() 种类太多,不便记忆,人脑要记多种结构,要用的时候一种也把握不住所以,为方便记 ...
- 3.CM3内核架构-寄存器
一.寄存器的种类