5.1. 引言

未匹配的标注

5.1 引言

为使用 sed,编写一个脚本,它包含一系列的编辑命令,然后你对一个输入文件运行这个脚本。

Sed 允许你将在编辑器如 vi 里面需要进行键盘操作的步骤转换为一个被脚本执行的无人值守步骤。当手动进行编辑时,你开始相信因果关系:键入一个编辑命令,然后立即看到结果。通常有一个撤销命令让你逆转一个命令的效果,并将这个文本文件返回它之前的状态。一旦你学会一个交互式的文本编辑器,你将体验到安全可控的进行修改的感觉,一次一步。

大多数 sed 的新手感觉写一个脚本来执行一系列的编辑比手动地去修改它更危险。恐惧的是通过自动化这个任务,有些事情发生了就不能逆转。学习 sed 的目标就是深刻地理解它,来看到你的结果是可预测的。换句话说,你开始相信在你编辑的脚本和你得到的输出之间的因果关系。

这需要以一个可控的,有条理的方式来使用 sed。在编写脚本中,你需要遵循下列的步骤:

  1. 在你做之前,通盘考虑你想要什么。

  2. 无歧义地描述一个做这个事情的步骤。

  3. 在提交任何最终修改前反复测试这个步骤。

这些步骤仅仅是第三章《了解正则表达式语法》中,我们为书写正则表达式描述的同样步骤的重申。它们描写了一个编写任何类型程序的方法论。看你的脚本是否工作的最好方法就是在不同的输入样本上测试它们并观察结果。

经过练习,你开始能依赖你的 sed 脚本,让它们如你所愿那样工作。(这有点类似于管理一个人自己的时间。学习相信特定的任务是能被委派给其它人的。你开始以小任务去测试人们,如果成功了,你就给更大的任务。)

这一章是关于让你舒服地编写为你做编辑工作的脚本。这涉及到理解 sed 如何工作的三个基本原则:

  • 在脚本中,所有编辑命令是依次应用于输入的每一行

  • 命令是被应用于所有行(全局的),除非行地址限定了被编辑命令影响的行。

  • 原始的输入文件是不变的。编辑命令修改原始文件的一个副本,然后这个副本被发送到标准输出。

在学习完这些基本原则后,我们将学习四类展示不同 sed 应用的脚本。这些脚本为你将编写的脚本提供了基本的示范。虽然在 sed 中有许多可用的命令,但这章中的脚本故意只使用一些命令。然而你可能会惊讶于如此少的命令能做如此多的事情。(第五章《基本 sed 命令》和第六章《高级 sed 命令》分别展示了基本和高级 sed 命令。)

我的想法是在研究探索可用在脚本中的所有命令之前,从一开始就集中精力理解脚本如何工作和如何使用脚本。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 查看所有版本


暂无话题~