awk程序可以用于检索数据库中的信息,数据库实际上是各种类型的文本文件。文本文件的结构化越好,对其处理就越容易工作,尽管这个结果不过是由独立的单词组成的行。
下面这个首字母缩写词列表是一个简单的数据库。
$ cat acronyms
BASIC Beginner‘ s AI I-Purpose Symbol ic Instruction Code
CICS Customer Information Control System
COBOL Common Business Oriented Language
DBMS Data Base Management System
GIGO Garbage In, Garbage Out
GIRL Generalized Information Retrieval Language
BASIC Beginner‘ s AI I-Purpose Symbol ic Instruction Code
CICS Customer Information Control System
COBOL Common Business Oriented Language
DBMS Data Base Management System
GIGO Garbage In, Garbage Out
GIRL Generalized Information Retrieval Language
制表符被作为字段分隔符。我们将看到一个程序,它将首字母缩写词作为输入并选择数据库中对应的行作为输出。(在下一幸中,我们将看到另外两个使用首字母缩写词数据库的程序。一个程序是读取首字母缩写词列表并在另一个文件中找到这些首字母缩写词出现的位置。另一个程序是定住这些首字母缩写词在文本文件中的第一次出现的位置并插入相应的首字母缩写词的描述。)我们编写的shell脚本命名为acro。它从命令行中获取第一个参数(首字母缩写词的名字)并将它传递给awk脚本,acro脚本如下:
$ cat acro
#!/bin/sh
#将shell的$1赋给awk的search变量
awk ‘$1 == search‘ search=$1 acronyms
#!/bin/sh
#将shell的$1赋给awk的search变量
awk ‘$1 == search‘ search=$1 acronyms
在shell命令行中的第一个参数($1)被赋给变量search,这个变量作为参数传递给awk程序。传递给awk程序的参数在脚本之后说明。(这闲的有些混乱,因为在awk程序中$1代表每个输入行的第一个字段,而在shell脚本中$1代表命令行提供的第一个参数。)
下面的例子演示了如何用这个程序在列表中找到特殊的首字母缩写词。
$ acro CICS
CICS Customer Information Control System
CICS Customer Information Control System
注意,我们将参数作为字符串来检测($1==search) 。我们也可以将其写成一个正则表达式匹配($1~search)。
参考资料:http://www.linuxawk.com/communication/533.html