3.6. 命令行语法——第二部分

未匹配的标注

命令行语法——第二部分

脚本处理

脚本是告诉程序怎么做的地方。至少需要一行指令。短的脚本能被指定在命令行上。更长的脚本通常放在容易被修改和测试的文件中。在书写脚本时,要记住执行指令的顺序和每一个指令是如何修改输入行的。

在 sed 和 awk 中,每条指令都有两个部分,一个 pattern(模式) 和 一个 procedure(步骤) 。模式是以斜杠(/)分隔的正则表达式,步骤指定要执行的一个或多个动作。

当读取输入的每一行时,程序读取脚本中的第一条指令,然后对当前行检查模式是否匹配。如果没有匹配,对应的步骤就被忽略,下一条指令接着被读取。如果匹配,则执行步骤中指定的动作。所有的指令都会被读取,不只是匹配输入行的第一条指令。

当所有适用的指令都被解释和应用于一行, sed 输出这一行,然后对每个输入行重复以上步骤。另外, awk 不会自动输出行。脚本中的指令控制最后是怎么处理的。

sed 和 awk 中步骤的内容是非常不同的。在 sed 中,步骤由类似于行编辑器中使用的那些编辑命令组成。大部分命令都由一个单字母组成。

在 awk 里,步骤由编程语句和函数组成。一个步骤必须被大括号包裹。

在下面的章节中,我们将学习一些处理一个示例邮件列表的脚本。

示例邮件列表

在接下来的章节中,这些例子使用一个名为 list 的示例文件。它包含了名称和地址的列表,如下所示。

➜  ch02 git:(daily) ✗ cat list
John Daggett, 341 King Road, Plymouth MA
Alice Ford, 22 East Broadway, Richmond VA
Orville Thomas, 11345 Oak Bridge Road, Tulsa OK
Terry Kalkas, 402 Lans Road, Beaver Falls PA
Eric Adams, 20 Post Road, Sudbury MA
Hubert Sims, 328A Brook Road, Roanoke VA
Amy Wilde, 334 Bayshore Pkwy, Mountain View CA
Sal Carpenter, 73 6th Street, Boston MA

如果你喜欢,可以在系统创建这个文件,或使用你自己创建的类似文件。因为这章中许多例子都短小且可交互,你可以在键盘键入它们,然后验证结果。

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

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~