File: gawk.info, Node: This Manual, Next: Conventions, Prev: Names, Up: Preface Using This Book =============== The term 'awk' refers to a particular program as well as to the language you use to tell this program what to do. When we need to be careful, we call the language "the 'awk' language," and the program "the 'awk' utility." This Info file explains both how to write programs in the 'awk' language and how to run the 'awk' utility. The term "'awk' program" refers to a program written by you in the 'awk' programming language. Primarily, this Info file explains the features of 'awk' as defined in the POSIX standard. It does so in the context of the 'gawk' implementation. While doing so, it also attempts to describe important differences between 'gawk' and other 'awk' implementations.(1) Finally, it notes any 'gawk' features that are not in the POSIX standard for 'awk'. There are sidebars scattered throughout the Info file. They add a more complete explanation of points that are relevant, but not likely to be of interest on first reading. All appear in the index, under the heading "sidebar." Most of the time, the examples use complete 'awk' programs. Some of the more advanced minor nodes show only the part of the 'awk' program that illustrates the concept being described. Although this Info file is aimed principally at people who have not been exposed to 'awk', there is a lot of information here that even the 'awk' expert should find useful. In particular, the description of POSIX 'awk' and the example programs in *note Library Functions::, and in *note Sample Programs::, should be of interest. This Info file is split into several parts, as follows: * Part I describes the 'awk' language and the 'gawk' program in detail. It starts with the basics, and continues through all of the features of 'awk'. It contains the following chapters: - *note Getting Started::, provides the essentials you need to know to begin using 'awk'. - *note Invoking Gawk::, describes how to run 'gawk', the meaning of its command-line options, and how it finds 'awk' program source files. - *note Regexp::, introduces regular expressions in general, and in particular the flavors supported by POSIX 'awk' and 'gawk'. - *note Reading Files::, describes how 'awk' reads your data. It introduces the concepts of records and fields, as well as the 'getline' command. I/O redirection is first described here. Network I/O is also briefly introduced here. - *note Printing::, describes how 'awk' programs can produce output with 'print' and 'printf'. - *note Expressions::, describes expressions, which are the basic building blocks for getting most things done in a program. - *note Patterns and Actions::, describes how to write patterns for matching records, actions for doing something when a record is matched, and the predefined variables 'awk' and 'gawk' use. - *note Arrays::, covers 'awk''s one-and-only data structure: the associative array. Deleting array elements and whole arrays is described, as well as sorting arrays in 'gawk'. The major node also describes how 'gawk' provides arrays of arrays. - *note Functions::, describes the built-in functions 'awk' and 'gawk' provide, as well as how to define your own functions. It also discusses how 'gawk' lets you call functions indirectly. * Part II shows how to use 'awk' and 'gawk' for problem solving. There is lots of code here for you to read and learn from. This part contains the following chapters: - *note Library Functions::, provides a number of functions meant to be used from main 'awk' programs. - *note Sample Programs::, provides many sample 'awk' programs. Reading these two chapters allows you to see 'awk' solving real problems. * Part III focuses on features specific to 'gawk'. It contains the following chapters: - *note Advanced Features::, describes a number of advanced features. Of particular note are the abilities to control the order of array traversal, have two-way communications with another process, perform TCP/IP networking, and profile your 'awk' programs. - *note Internationalization::, describes special features for translating program messages into different languages at runtime. - *note Debugger::, describes the 'gawk' debugger. - *note Namespaces::, describes how 'gawk' allows variables and/or functions of the same name to be in different namespaces. - *note Arbitrary Precision Arithmetic::, describes advanced arithmetic facilities. - *note Dynamic Extensions::, describes how to add new variables and functions to 'gawk' by writing extensions in C or C++. * Part IV provides the appendices, the Glossary, and two licenses that cover the 'gawk' source code and this Info file, respectively. It contains the following appendices: - *note Language History::, describes how the 'awk' language has evolved since its first release to the present. It also describes how 'gawk' has acquired features over time. - *note Installation::, describes how to get 'gawk', how to compile it on POSIX-compatible systems, and how to compile and use it on different non-POSIX systems. It also describes how to report bugs in 'gawk' and where to get other freely available 'awk' implementations. - *note Notes::, describes how to disable 'gawk''s extensions, as well as how to contribute new code to 'gawk', and some possible future directions for 'gawk' development. - *note Basic Concepts::, provides some very cursory background material for those who are completely unfamiliar with computer programming. - The *note Glossary::, defines most, if not all, of the significant terms used throughout the Info file. If you find terms that you aren't familiar with, try looking them up here. - *note Copying::, and *note GNU Free Documentation License::, present the licenses that cover the 'gawk' source code and this Info file, respectively. ---------- Footnotes ---------- (1) All such differences appear in the index under the entry "differences in 'awk' and 'gawk'."