The A-Z of Programming Languages: AWK

Total Page:16

File Type:pdf, Size:1020Kb

The A-Z of Programming Languages: AWK CS@CU NEWSLETTER OF THE DEPARTMENT OF COMPUTER SCIENCE AT COLUMBIA UNIVERSITY VOL.5 NO.1 WINTER 2008 The A-Z of Programming Languages: AWK Professor Alfred V. Aho talks about the history and continuing popularity of his pattern matching language AWK. Lawrence Gussman Professor of Computer Science Alfred V. Aho The following article is reprinted How did the idea/concept of language suitable for simple It was built to do simple data with the permission of the AWK language develop data-processing tasks. processing: the ordinary data Computerworld Australia and come into practice? processing that we routinely (www.computerworld.com.au). We were heavily influenced by As with a number of languages, GREP, a popular string-matching did on a day-to-day basis. We The interview was conducted just wanted to have a very by Naomi Hamilton. it was born from the necessity utility on UNIX, which had to meet a need. As a researcher been created in our research simple scripting language that Lawrence Gussman Professor would allow us, and people of Computer Science Alfred V. at Bell Labs in the early 1970s, center. GREP would search I found myself keeping track a file of text looking for lines who weren’t very computer Aho is a man at the forefront savvy, to be able to write of computer science research. of budgets, and keeping track matching a pattern consisting Formerly the Vice President of editorial correspondence. of a limited form of regular throw-away programs for of the Computing Sciences I was also teaching at a nearby expressions, and then print all routine data processing. Research Center at Bell Labs, university at the time, so I lines in the file that matched Were there any programs or Professor Aho is well known had to keep track of student that regular expression. languages that already had for co-authoring the ‘Dragon’ grades as well. book series and for being one We thought that we’d like to these functions at the time of the three developers of I wanted to have a simple little generalize the class of patterns you developed AWK? the AWK pattern matching language in which I could write to deal with numbers as well Our original model was GREP. language in the mid-1970’s, one- or two-line programs to as strings. We also thought But GREP had a very limited along with Brian Kernighan do these tasks. Brian Kernighan, that we’d like to have more form of pattern action process- and Peter Weinberger. In the a researcher next door to me computational capability than ing, so we generalized the following interview, Professor at the Labs, also wanted to just printing the line that Aho explains more about the capabilities of GREP considerably. create a similar language. We matched the pattern. development of AWK. I was also interested at that had daily conversations which So out of this grew AWK, a time in string pattern matching culminated in a desire to language based on the principle (continued on next page) create a pattern-matching of pattern-action processing. CS@CU WINTER 2008 1 Cover Story (continued) algorithms and context-free scanned for each pattern in the was that I got to know how language designers later used grammar parsing algorithms program, and for each pattern Kernighan and Weinberger it as a model for developing for compiler applications. that matches, the associated thought about language design: more powerful languages. This means that you can see action is executed. it was a really enlightening About 10 years after AWK was a certain similarity between A simple example should make process! With the flexible created, Larry Wall created a what AWK does and what the this clear. Suppose we have a compiler construction tools we language called PERL, which compiler construction tools file in which each line is a name had at our disposal, we very was patterned after AWK and LEX and YACC do. followed by a phone number. quickly evolved the language some other UNIX commands. LEX and YACC were tools that Let’s say the file contains the to adopt new useful syntactic PERL is now one of the most were built around string pattern line ‘Naomi 1234’. In the AWK and semantic constructs. We popular programming languages matching algorithms that I was program the first field is referred spent a whole year intensely in the world. So not only was working on: LEX was designed to as $1, the second field as debating what constructs AWK popular when it was to do lexical analysis and YACC $2, and so on. Thus, we can should and shouldn’t be in introduced but it also stimulated syntax analysis. These tools were create an AWK program to the language. the creation of other popular compiler construction utilities retrieve Naomi’s phone number Language design is a very languages. which were widely used in Bell by simply writing $1==“Naomi” personal activity and each person labs, and later elsewhere, to {print $2} which means if the brings to a language the classes AWK has inspired many create all sorts of little languages. first field matches Naomi, then of problems that they’d like to other languages as you’ve Brian Kernighan was using print the second field. Now solve, and the manner in which already mentioned: them to make languages for you’re an AWK programmer! they’d like them to be solved. why do you think this is? typesetting mathematics and If you typed that program into I had a lot of fun creating AWK, What made AWK popular initially picture processing. AWK and presented it with a and working with Kernighan and was its simplicity and the kinds LEX is a tool that looks for lex- file that had names and phone Weinberger was one of the most of tasks it was built to do. It emes in input text. Lexemes numbers, then it would print stimulating experiences of my has a very simple programming are sequences of characters 1234 as Naomi’s phone number. career. I also learned I would not model. The idea of pattern-action that make up logical units. For A typical AWK program would want to get into a programming programming is very natural example, a keyword like ‘then’ have several pattern-action contest with either of them for people. We also made the in a programming language is statements. The patterns can however! Their programming language compatible with pipes a lexeme. The character ‘t’ by be Boolean combinations abilities are formidable. in UNIX. The actions in AWK itself isn’t interesting, ‘h’ by of strings and numbers; the Interestingly, we did not intend are really simple forms of C itself isn’t interesting, but the actions can be statements in a the language to be used programs. You can write a simple combination ‘then’ is interest- C-like programming language. except by the three of us. action like {print $2} or you can write a much more complex ing. One of the first tasks a AWK became popular since But very quickly we discovered compiler has to do is read the it was one of the standard lots of other people had the C-like program as an action source program and group its programs that came with need for the routine kind of associated with a pattern. Some Wall Street financial houses used characters into lexemes. every UNIX system. data processing that AWK was AWK when it first came out to AWK was influenced by this kind good for. People didn’t want to balance their books because of textual processing, but AWK What are you most proud of write hundred-line C programs was aimed at data-processing in the development of AWK? to do data processing that it was so easy to write data- could be done with a few lines processing programs in AWK. tasks and it assumed very little AWK was developed by three background on the part of the of AWK, so lots of people AWK turned a number of people people: me, Brian Kernighan started using AWK. user in terms of programming and Peter Weinberger. Peter into programmers because the sophistication. Weinberger was interested in For many years AWK was one learning curve for the language what Brian and I were doing right of the most popular commands was very shallow. Even today a Can you provide our readers from the start. We had created on UNIX, and today, even though large number of people continue with a brief summary in a grammatical specification for a number of other similar to use AWK, saying languages your own words of AWK as AWK but hadn’t yet created languages have come on the such as PERL have become too a language? the full run-time environment. scene, AWK still ranks among complicated. Some say PERL AWK is a language for processing Weinberger came along and said the top 25 or 30 most popular has become such a complex files of text. A file is treated ‘hey, this looks like a language programming languages in the language that it’s become as a sequence of records, and I could use myself’, and within world. And it all began as a almost impossible to understand by default each line is a record. a week he created a working little exercise to create a utility the programs once they’ve Each line is broken up into a run time for AWK. This initial that the three of us would find been written. sequence of fields, so we can form of AWK was very useful useful for our own use.
Recommended publications
  • Top 15 ERP Software Vendors – 2010
    Top 15 ERP Software Vendors – 2010 Profiles of the Leading ERP Vendors Find the best ERP system for your company. For more information visit Business-Software.com/ERP. About ERP Software Enterprise resource planning (ERP) is not a new concept. It was introduced more than 40 years ago, when the first ERP system was created to improve inventory control and management at manufacturing firms. Throughout the 70’s and 80’s, as the number of companies deploying ERP increased, its scope expanded quite a bit to include various production and materials management functions, although it was designed primarily for use in manufacturing plants. In the 1990’s, vendors came to realize that other types of business could benefit from ERP, and that in order for a business to achieve true organizational efficiency, it needed to link all its internal business processes in a cohesive and coordinated way. As a result, ERP was transformed into a broad-reaching environment that encompassed all activities across the back office of a company. What is ERP? An ERP system combines methodologies with software and hardware components to integrate numerous critical back-office functions across a company. Made up of a series of “modules”, or applications that are seamlessly linked together through a common database, an ERP system enables various departments or operating units such as Accounting and Finance, Human Resources, Production, and Fulfillment and Distribution to coordinate activities, share information, and collaborate. Key Benefits for Your Company ERP systems are designed to enhance all aspects of key operations across a company’s entire back-office – from planning through execution, management, and control.
    [Show full text]
  • UNIX Workshop Series: Quick-Start Objectives
    Part I UNIX Workshop Series: Quick-Start Objectives Overview – Connecting with ssh Command Window Anatomy Command Structure Command Examples Getting Help Files and Directories Wildcards, Redirection and Pipe Create and edit files Overview Connecting with ssh Open a Terminal program Mac: Applications > Utilities > Terminal ssh –Y [email protected] Linux: In local shell ssh –Y [email protected] Windows: Start Xming and PuTTY Create a saved session for the remote host name centos.css.udel.edu using username Connecting with ssh First time you connect Unix Basics Multi-user Case-sensitive Bash shell, command-line Commands Command Window Anatomy Title bar Click in the title bar to bring the window to the front and make it active. Command Window Anatomy Login banner Appears as the first line of a login shell. Command Window Anatomy Prompts Appears at the beginning of a line and usually ends in $. Command Window Anatomy Command input Place to type commands, which may have options and/or arguments. Command Window Anatomy Command output Place for command response, which may be many lines long. Command Window Anatomy Input cursor Typed text will appear at the cursor location. Command Window Anatomy Scroll Bar Will appear as needed when there are more lines than fit in the window. Command Window Anatomy Resize Handle Use the mouse to change the window size from the default 80x24. Command Structure command [arguments] Commands are made up of the actual command and its arguments. command -options [arguments] The arguments are further broken down into the command options which are single letters prefixed by a “-” and other arguments that identify data for the command.
    [Show full text]
  • Wait, I Don't Want to Be the Linux Administrator for SAS VA
    SESUG Paper 88-2017 Wait, I don’t want to be the Linux Administrator for SAS VA Jonathan Boase; Zencos Consulting ABSTRACT Whether you are a new SAS administrator or switching to a Linux environment, you have a complex mission. This job becomes even more formidable when you are working with a system like SAS Visual Analytics that requires multiple users loading data daily. Eventually a user will have data issues or create a disruption that causes the system to malfunction. When that happens, what do you do next? In this paper, we will go through the basics of a SAS Visual Analytics Linux environment and how to troubleshoot the system when issues arise. INTRODUCTION Many companies choose to implement SAS Visual Analytics in a Linux environment. With a distributed deployment, it’s the only choice but many chose this operating system because it reduces operating costs. If you are the newly chosen SAS platform administrator, you might be more versed in a Windows environment and feel intimidated by Linux. This paper introduces using basic Linux commands and methods for troubleshooting a SAS Visual Analytics environment. The paper assumes that SAS Visual Analytics is installed on a SAS 9.4 platform for Linux and that the reader has some familiarity with other operating systems, such as Windows. PLATFORM ADMINISTRATION 101 SAS platform administrators work with three main product areas. Each area provides a different functionality based on the task the administrator needs to perform. The following figure defines each area and provides a general overview of its purpose. Figure 1 Platform Administrator Tools Operating System SAS Management SAS Environment •Contains installed Console Manager software •Access and manage the •Monitor the •Contains logs used for metadata environment troubleshooting •Control database •Configure custom alerts •Administer host system connections users •Manage user accounts •Manage the LASR server With any operating system, there is always a lot to learn.
    [Show full text]
  • Avoiding the Top 10 Software Security Design Flaws
    AVOIDING THE TOP 10 SOFTWARE SECURITY DESIGN FLAWS Iván Arce, Kathleen Clark-Fisher, Neil Daswani, Jim DelGrosso, Danny Dhillon, Christoph Kern, Tadayoshi Kohno, Carl Landwehr, Gary McGraw, Brook Schoenfield, Margo Seltzer, Diomidis Spinellis, Izar Tarandach, and Jacob West CONTENTS Introduction ..................................................................................................................................................... 5 Mission Statement ..........................................................................................................................................6 Preamble ........................................................................................................................................................... 7 Earn or Give, but Never Assume, Trust ...................................................................................................9 Use an Authentication Mechanism that Cannot be Bypassed or Tampered With .................... 11 Authorize after You Authenticate ...........................................................................................................13 Strictly Separate Data and Control Instructions, and Never Process Control Instructions Received from Untrusted Sources ........................................................................................................... 14 Define an Approach that Ensures all Data are Explicitly Validated .............................................16 Use Cryptography Correctly ....................................................................................................................
    [Show full text]
  • Reasoning About Programs Need: Definition of Works/Correct: a Specification (And Bugs) but Programs Fail All the Time
    Good programs, broken programs? Goal: program works (does not fail) Reasoning about Programs Need: definition of works/correct: a specification (and bugs) But programs fail all the time. Why? A brief interlude on 1. Misuse of your code: caller did not meet assumptions specifications, assertions, and debugging 2. Errors in your code: mistake causes wrong computation 3. Unpredictable external problems: • Out of memory, missing file, network down, … • Plan for these problems, fail gracefully. 4. Wrong or ambiguous specification, implemented correctly Largely based on material from University of Washington CSE 331 A Bug's Life, ca. 1947 A Bug's Life Defect: a mistake in the code Think 10 per 1000 lines of industry code. We're human. -- Grace Hopper Error: incorrect computation Because of defect, but not guaranteed to be visible Failure: observable error -- program violates its specification Crash, wrong output, unresponsive, corrupt data, etc. Time / code distance between stages varies: • tiny (<second to minutes / one line of code) • or enormous (years to decades to never / millons of lines of code) "How to build correct code" Testing 1. Design and Verify Make correctness more likely or provable from the start. • Can show that a program has an error. 2. Program Defensively • Can show a point where an error causes a failure. Plan for defects and errors. • Cannot show the error that caused the failure. • make testing more likely to reveal errors as failures • Cannot show the defect that caused the error. • make debugging failures easier 3. Test and Validate Try to cause failures. • Can improve confidence that the sorts of errors/failures • provide evidence of defects/errors targeted by the tests are less likely in programs similar • or increase confidence of their absence to the tests.
    [Show full text]
  • Drilling Network Stacks with Packetdrill
    Drilling Network Stacks with packetdrill NEAL CARDWELL AND BARATH RAGHAVAN Neal Cardwell received an M.S. esting and troubleshooting network protocols and stacks can be in Computer Science from the painstaking. To ease this process, our team built packetdrill, a tool University of Washington, with that lets you write precise scripts to test entire network stacks, from research focused on TCP and T the system call layer down to the NIC hardware. packetdrill scripts use a Web performance. He joined familiar syntax and run in seconds, making them easy to use during develop- Google in 2002. Since then he has worked on networking software for google.com, the ment, debugging, and regression testing, and for learning and investigation. Googlebot web crawler, the network stack in Have you ever had the experience of staring at a long network trace, trying to figure out what the Linux kernel, and TCP performance and on earth went wrong? When a network protocol is not working right, how might you find the testing. [email protected] problem and fix it? Although tools like tcpdump allow us to peek under the hood, and tools like netperf help measure networks end-to-end, reproducing behavior is still hard, and know- Barath Raghavan received a ing when an issue has been fixed is even harder. Ph.D. in Computer Science from UC San Diego and a B.S. from These are the exact problems that our team used to encounter on a regular basis during UC Berkeley. He joined Google kernel network stack development. Here we describe packetdrill, which we built to enable in 2012 and was previously a scriptable network stack testing.
    [Show full text]
  • HECO-UNIX-Top Cladding Screw Into the Timber
    HECO-UNIX -top Cladding Screw THE UNIQUE CLADDING SCREW WITH CONTRACTION EFFECT APPLICATION EXAMPLES Façade construction Secure and reliable façade fixing Louvred façades 1 2 3 The variable pitch of the HECO-UNIX full The smaller thread pitch means that the Gap free axial fixing of the timber board thread takes hold boards are clamped firmly together via the HECO-UNIX full thread PRODUCT CHARACTERISTICS The HECO-UNIX-top Cladding Screw into the timber. The façade is secured axially via with contraction effect the thread, which increases the pull-out strength. HECO-UNIX-top full thread This results in fewer fastening points and an Timber façades are becoming increasingly popular ultimately more economical façade construction. Contraction effect thanks to the full in both new builds and renovations. This applica - Thanks to the full thread, the sole function of thread with variable thread pitch tion places high demands on fastenings. The the head is to fit the screw drive. As such, the Axial fixing of component façade must be securely fixed to the sub-structure HECO-UNIX-top façade screw has a small and the fixings should be invisible or attractive raised head, which allows simple, concealed Reduced spreading effect thanks to to look at. In addition, the structure must be installation preventing any water penetration the HECO-TOPIX ® tip permanently sound if it is constantly exposed to through the screw. The screws are made of the weather. The HECO-UNIX-top façade screw stainless steel A2, which safely eliminates the Raised countersunk head is the perfect solution to all of these requirements.
    [Show full text]
  • Unix/Linux Command Reference
    Unix/Linux Command Reference .com File Commands System Info ls – directory listing date – show the current date and time ls -al – formatted listing with hidden files cal – show this month's calendar cd dir - change directory to dir uptime – show current uptime cd – change to home w – display who is online pwd – show current directory whoami – who you are logged in as mkdir dir – create a directory dir finger user – display information about user rm file – delete file uname -a – show kernel information rm -r dir – delete directory dir cat /proc/cpuinfo – cpu information rm -f file – force remove file cat /proc/meminfo – memory information rm -rf dir – force remove directory dir * man command – show the manual for command cp file1 file2 – copy file1 to file2 df – show disk usage cp -r dir1 dir2 – copy dir1 to dir2; create dir2 if it du – show directory space usage doesn't exist free – show memory and swap usage mv file1 file2 – rename or move file1 to file2 whereis app – show possible locations of app if file2 is an existing directory, moves file1 into which app – show which app will be run by default directory file2 ln -s file link – create symbolic link link to file Compression touch file – create or update file tar cf file.tar files – create a tar named cat > file – places standard input into file file.tar containing files more file – output the contents of file tar xf file.tar – extract the files from file.tar head file – output the first 10 lines of file tar czf file.tar.gz files – create a tar with tail file – output the last 10 lines
    [Show full text]
  • BSD UNIX Toolbox 1000+ Commands for Freebsd, Openbsd
    76034ffirs.qxd:Toolbox 4/2/08 12:50 PM Page iii BSD UNIX® TOOLBOX 1000+ Commands for FreeBSD®, OpenBSD, and NetBSD®Power Users Christopher Negus François Caen 76034ffirs.qxd:Toolbox 4/2/08 12:50 PM Page ii 76034ffirs.qxd:Toolbox 4/2/08 12:50 PM Page i BSD UNIX® TOOLBOX 76034ffirs.qxd:Toolbox 4/2/08 12:50 PM Page ii 76034ffirs.qxd:Toolbox 4/2/08 12:50 PM Page iii BSD UNIX® TOOLBOX 1000+ Commands for FreeBSD®, OpenBSD, and NetBSD®Power Users Christopher Negus François Caen 76034ffirs.qxd:Toolbox 4/2/08 12:50 PM Page iv BSD UNIX® Toolbox: 1000+ Commands for FreeBSD®, OpenBSD, and NetBSD® Power Users Published by Wiley Publishing, Inc. 10475 Crosspoint Boulevard Indianapolis, IN 46256 www.wiley.com Copyright © 2008 by Wiley Publishing, Inc., Indianapolis, Indiana Published simultaneously in Canada ISBN: 978-0-470-37603-4 Manufactured in the United States of America 10 9 8 7 6 5 4 3 2 1 Library of Congress Cataloging-in-Publication Data is available from the publisher. No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher for permis- sion should be addressed to the Legal Department, Wiley Publishing, Inc., 10475 Crosspoint Blvd., Indianapolis, IN 46256, (317) 572-3447, fax (317) 572-4355, or online at http://www.wiley.com/go/permissions.
    [Show full text]
  • EMERSON CENTER: HARDWARE Comp.Chem.20
    EMERSON CENTER: HARDWARE comp.chem.20 ssh –Y [email protected] euch4e.chem.emory.edu Passwd: HOME=/home/chemistry/ch_res/eclab cd spark cd star cd fire $HOME/spark $HOME/star $HOME/fire mkdir USER mkdir USER mkdir USER cd USER cd USER cd USER # Nodes = 36 # Nodes = 36 # Nodes = 16 + 1 GPU # Cores/node = 24 # Cores/node = 24, 16 # Cores/node = 56 + 5000 # Speed = 2.6 GHz # Speed = 2.5 GHz # Speed = 2.6 GHz # Memory = 96 GB # Memory = 80 GB # Memory = 196 GB # Classes = spark24p # Classes = star24p # Classes = fire28p spark12p star16p fire-gpu star8p stars (1 core) spark (or spark.chem.emory.edu) star (or star.chem.emory.edu) fire (or fire.chem.emory.edu) Login the Emerson Center’s Computers From a Unix/MAC/iPad/iPhone terminal ssh -Y [email protected] From PC 1) Download and run PuTTY (www.putty.org) 2) Enable X-forwarding (Connection -> SSH -> Tunnels) 3) Under Session, choose SSH on port 22 4) Type euch4e.chem.emory.edu as host name 5) Click Open A few UNIX commands and vi Editor UNIX Tree Structure: Files and Directories cd - change directory: cd directory_name rm - remove command: rm file_name: also: rmdir, rm –I mv - move comman: mv file_name mkdir - make directory: mkdir directory_name cp - copy command: cp file_name_1 file_name_2 ls - list command VI (View) Command mode and Insert mode vi file_name Type i for insert command Use backspace in order to correct mistake :w :w! or :wq :wq! Write or write and quit :q :q! quit dd n delete o Insert line EMERSON CENTER: Software (Selected List) Electronic Structure MD Simulation & Modeling Gaussian-16, 09 GROMACS-19.1 Molpro-15.1 NAMD-2.6 MOLCAS Rosetta GAMESS Amber-14 TURBOMOLE ORCA VASP-5.2 DFTB+ Graphics & Programming MATLAB 2019 Mathematica 12.0 Gauss View 6 Command file (for LoadLeveler only): #!/bin/ksh # ### # @ error = errcl.log # # @ initialdir = /star/chemistry/eclab/YOUR # @ requirements = (Arch == "R6000") && (OpSys == "AIX53") # @ notify_user = name@euch4e # @ class = star16p # @ group = ch_res # @ queue # INPF= test_inp OUTF= test_out .
    [Show full text]
  • UNIX X Command Tips and Tricks David B
    SESUG Paper 122-2019 UNIX X Command Tips and Tricks David B. Horvath, MS, CCP ABSTRACT SAS® provides the ability to execute operating system level commands from within your SAS code – generically known as the “X Command”. This session explores the various commands, the advantages and disadvantages of each, and their alternatives. The focus is on UNIX/Linux but much of the same applies to Windows as well. Under SAS EG, any issued commands execute on the SAS engine, not necessarily on the PC. X %sysexec Call system Systask command Filename pipe &SYSRC Waitfor Alternatives will also be addressed – how to handle when NOXCMD is the default for your installation, saving results, and error checking. INTRODUCTION In this paper I will be covering some of the basics of the functionality within SAS that allows you to execute operating system commands from within your program. There are multiple ways you can do so – external to data steps, within data steps, and within macros. All of these, along with error checking, will be covered. RELEVANT OPTIONS Execution of any of the SAS System command execution commands depends on one option's setting: XCMD Enables the X command in SAS. Which can only be set at startup: options xcmd; ____ 30 WARNING 30-12: SAS option XCMD is valid only at startup of the SAS System. The SAS option is ignored. Unfortunately, ff NOXCMD is set at startup time, you're out of luck. Sorry! You might want to have a conversation with your system administrators to determine why and if you can get it changed.
    [Show full text]
  • The AWK Programming Language
    The Programming ~" ·. Language PolyAWK- The Toolbox Language· Auru:o V. AHo BRIAN W.I<ERNIGHAN PETER J. WEINBERGER TheAWK4 Programming~ Language TheAWI(. Programming~ Language ALFRED V. AHo BRIAN w. KERNIGHAN PETER J. WEINBERGER AT& T Bell Laboratories Murray Hill, New Jersey A ADDISON-WESLEY•• PUBLISHING COMPANY Reading, Massachusetts • Menlo Park, California • New York Don Mills, Ontario • Wokingham, England • Amsterdam • Bonn Sydney • Singapore • Tokyo • Madrid • Bogota Santiago • San Juan This book is in the Addison-Wesley Series in Computer Science Michael A. Harrison Consulting Editor Library of Congress Cataloging-in-Publication Data Aho, Alfred V. The AWK programming language. Includes index. I. AWK (Computer program language) I. Kernighan, Brian W. II. Weinberger, Peter J. III. Title. QA76.73.A95A35 1988 005.13'3 87-17566 ISBN 0-201-07981-X This book was typeset in Times Roman and Courier by the authors, using an Autologic APS-5 phototypesetter and a DEC VAX 8550 running the 9th Edition of the UNIX~ operating system. -~- ATs.T Copyright c 1988 by Bell Telephone Laboratories, Incorporated. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopy­ ing, recording, or otherwise, without the prior written permission of the publisher. Printed in the United States of America. Published simultaneously in Canada. UNIX is a registered trademark of AT&T. DEFGHIJ-AL-898 PREFACE Computer users spend a lot of time doing simple, mechanical data manipula­ tion - changing the format of data, checking its validity, finding items with some property, adding up numbers, printing reports, and the like.
    [Show full text]