简介
接下来的几篇文章,会对sed做一个系统性的讲解,争取能帮你做到举一反三,学以致用的程度。以下内容会在陆续地文章中涵盖到:
sed
的命名,历史等周边信息:帮助你对sed
有一个初步的了解sed
的功能,何时使用:加深了解sed
sed
命令的结构,工作方法:从底层去了解sed
sed
的用法细节:命令选项,地址规范,模式空间,保持空间,分组操作符,分支,工作流控制,多行技巧等sed
常见命令总结:一个帮助总结的常用命令清单sed
快速学习指南:如果你很忙的话,就只看这里就好
如何学习sed
sed
和大多数Linux的命令工具一样,不会的时候觉得很高大上,真正学起来才发现原理并不复杂,好不容易学会之后却又很快就忘了。因此想要学好sed
先要克服心里上的先入为主,并且在学会之后,应该经常使用,勤加练习,才不会白白浪费学习时间。希望你能做到以下几点:
- 认识到
sed
就仅仅是一个命令行工具而已,其功能甚至不如一个微软Word多,只要系统的学习并且练习,没什么难的 - 学会之后要在类Unix环境下尽量多的使用,想方设法的使用才能让你对
sed
愈加熟练 - 尽管
sed
用法大全一类的cheatsheet可以帮助你学习sed
,但学习sed
并不是简单的记命令,而是理解后的举一反三,谨记这一点
sed
的命名和历史
sed
即Stream Editor (流编辑器)的意思,顾名思义是用来对流进行编辑的工具,这里的流指的是I/O流,更直白讲就是对字符串进行操作。比如:echo "hello world" | sed "s/h/H/;s/w/W/"
就是把echo向屏幕输出的hello world
转化为Hello World
(首字母大小写转化)。
sed
是由贝尔实验室的Lee E. McMahon在1974年完成初版开发的。Lee已于1989年去世,57岁的他可谓英年早逝,感谢他为sed
做出的贡献。
由于sed
强大的流编辑能力,使得sed
至今仍是很多类Unix系统自带的命令行程序之一。
sed
的功能,什么时候使用/不使用
sed
可以以行为单位,对每一个的相关内容进行简单的增删查改,最常用的功能有查找,替换,大小写编辑,就地改动等等。因此,sed
擅长:
- 对于整个文件/流,以行为单位的简易修改
- 对于行内的相关信息的简易修改(如:替换)
即便sed
功能强大,对于逻辑较为复杂的改动(如:对需要运算条件逻辑进行判断时),应该选用更高级的语言如awk
,bash
等;同时,对于特别简单的流编辑,比如查看文件首和文件尾,显然选用head
和tail
更为合适。总结起来,sed
不应该被用于:
- 判定逻辑或修稿操作过于复杂的流编辑
- 有更为简单的替代品的流编辑,比如
head
和tail
下一节课:sed
命令的结构,底层原理,调试