2.5. 掌握sed和awk的四个障碍
掌握 sed 和 awk 的四个障碍#
有许多入门的 UNIX 书籍会让你熟悉 sed 和 awk。这本书的目标是让你走得更远 —— 帮助你精通 sed 和 awk 来减少你达到目标所需要的时间和努力。
在精通 sed 和 awk 的征途上有四个障碍。你必须学习:
- 如何使用 sed 和 awk。这是一个相对低的待清除障碍。因为 —— 幸运的是 —— sed 和 awk 工作方式很相似,都是基于被编辑的行。第二章 —— 理解基本操作 —— 就讲述了如何使用 sed 和 awk。
- 应用 UNIX 正则表达式语法。使用 UNIX 正则表达式语法来进行模式匹配,对于 sed 和 awk 还有许多其他的 UNIX 程序都是很常见的。这是一个困难的障碍,原因有二:1)语法很晦涩难懂。2)虽然许多人有一些使用正则表达式的经验,但很少有人能坚持去精通整个语法。你对这个语法越熟悉,使用 sed 和 awk 就越容易。这就是为什么我们在第三章 —— 理解正则表达式 —— 花了很多时间来讲正则表达式。
- 如何与 shell 交互。虽然不是和 sed 和 awk 本身直接相关,但管理与命令 shell 的交互经常让人沮丧,因为 shell 和这两个程序共享了许多特殊字符。如果你可以,就将你的脚本放到独立的文件来避免这个问题。如果不行,就要为你的脚本使用 Bourne-compatible shell (引用规则更直接)并且使用单引号来包含你的脚本。如果你在交互式 shell 中使用 csh 记得使用 反斜杠对叹号进行转义(“\!”)。没有其他办法能够让 csh 单独留下叹号。
- 编写脚本的技能。这是最难的,相当于一系列的高阶跨栏。因为这个原因,这本书的大部分都致力于脚本编写。使用 sed 你需要学习一套单字母命令,使用 awk 你不得不学习一个编程语言的语句。然而,为掌握脚本编写的诀窍,你绝对需要尽可能多地研究例子,当然,还需要亲手去写自己的脚本。
如果你在参加跨栏比赛,能跨过去并不能赢 —— 迅速地跨过去才可以。类似的,在脚本编写中,学习脚本命令集或语言仅仅是跨过去,掌握用你的脚本来解决问题的能力,才是迅速的奔跑去赢得胜利。
推荐文章: