6.5. Exercises

These are some practical examples where awk can be useful.

  1. For the first exercise, your input is lines in the following form:

    Username:Firstname:Lastname:Telephone number

    Make an awk script that will convert such a line to an LDAP record in this format:

    
dn: uid=Username, dc=example, dc=com cn: Firstname Lastname sn: Lastname telephoneNumber: Telephone number 

    Create a file containing a couple of test records and check.

  2. Create a Bash script using awk and standard UNIX commands that will show the top three users of disk space in the /home file system (if you don't have the directory holding the homes on a separate partition, make the script for the / partition; this is present on every UNIX system). First, execute the commands from the command line. Then put them in a script. The script should create sensible output (sensible as in readable by the boss). If everything proves to work, have the script email its results to you (use for instance mail -s Disk space usage < result).

    If the quota daemon is running, use that information; if not, use find.

  3. Create XML-style output from a Tab-separated list in the following form:

    
Meaning very long line with a lot of description meaning another long line othermeaning more longline testmeaning looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong line, but i mean really looooooooooooooooooooooooooooooooooooooooooooooooooong. 

    The output should read:

    
<row> <entry>Meaning</entry> <entry> very long line </entry> </row> <row> <entry>meaning</entry> <entry> long line </entry> </row> <row> <entryothermeaning</entry> <entry> more longline </entry> </row> <row> <entrytestmeaning</entry> <entry> looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong line, but i mean really looooooooooooooooooooooooooooooooooooooooooooooooooong. </entry> </row> 

    Additionally, if you know anything about XML, write a BEGIN and END script to complete the table. Or do it in HTML.