Er zijn slechts twaalf mensen die de vier grote jaarlijkse Amerikaanse entertainmentprijzen gewonnen hebben: Emmy, Grammy, Oscar en Tony. Het winnen van deze vier prijzen wordt afgekort als EGOT (of soms als GATE als men de officiële naam Academy Award gebruikt voor de Oscar) en met spreekt ook van de Grand Slam van de showbusiness. Deze prijzen eren uitstekende prestaties op gebied van televisie, muziek (of andere audio-opnames), film en theater.

naam EGOT voltooid Emmy Grammy Oscar Tony
Richard Rodgers1 1962 (17 jaar) 1962 1960 1945 1950
Helen Hayes2 1977 (45 jaar) 1953 1977 1932 1947
Rita Moreno3 1977 (16 jaar) 1977 1972 1961 1975
John Gielgud4 1991 (30 jaar) 1991 1979 1981 1961
Audrey Hepburn5 1994 (41 jaar) 1993 1994 1953 1954
Marvin Hamlisch6 1995 (23 jaar) 1995 1974 1973 1976
Jonathan Tunick7 1997 (20 jaar) 1982 1988 1977 1997
Mel Brooks8 2001 (34 jaar) 1967 1998 1968 2001
Mike Nichols9 2001 (40 jaar) 2001 1961 1967 1964
Whoopi Goldberg10 2002 (17 jaar) 2002 1985 1990 2002
Scott Rudin11 2012 (28 jaar) 1984 2012 2007 1994
Robert Lopez12 2014 (10 jaar) 2008 2012 2014 2004

Het acroniem EGOT werd voor het eerst gebruikt door acteur Philip Michael Thomas toen hij onthulde dat hij de ambitie had om deze vier prijzen te winnen. Tot op heden werd hij echter nog voor geen enkele van de prijzen genomineerd, maar hij won wel een People's Choice Award en een nominatie voor de Golden Globe. Drie andere personen — Barbra Streisand, Liza Minelli en James Earl Jones — hebben ook de vier prijzen gewonnen, maar één daarvan werd buiten competitie uitgereikt als een soort ere-onderscheiding (Streisand's Tony, Minnelli's Grammy en Jones' Oscar). Van de twaalf winnaars zijn er ook nog twee — Marvin Hamlisch and Richard Rodgers — die de Pulitzerprijs in de wacht gesleept hebben.

De volgende personen hebben elk drie van de vier grote entertainmentprijzen gewonnen in competitieve categorieën. Het winnen van drie van de vier prijzen wordt ook wel eens 3GOT genoemd (kwinkslag naar de term EGOT), waarbij de vier combinaties afzonderlijk benoemd worden als EGO, TOE, GOT en GET.

Opgave

Gegeven zijn vier tekstbestanden emmy.txt82, grammy.txt83, oscar.txt84 en tony.txt85, die elk een lijst van personen bevatten die de gelijknamige prijs gewonnen hebben. Elke regel van die bestanden bevat de naam van een persoon, gevolgd door een tab en het jaartal waarin die persoon de prijs gewonnen heeft. Je mag ervan uitgaan dat een persoon maar één keer in het bestand voorkomt (indien een persoon meerdere keren een bepaalde prijs gewonnen heeft, dan staat in het bestand bijvoorbeeld enkel het jaartal waarin de prijs voor het eerst gewonnen werd).

Gevraagd wordt om een bash shell script uitslover te schrijven dat op basis van de inhoud van deze vier tekstbestanden een overzicht moet uitschrijven naar standaard uitvoer met alle personen die twee, drie of vier van de prijzen gewonnen hebben. Het shell script moet er hierbij van uitgaan dat de vier bestanden in dezelfde directory als het shell script staan. Het overzicht is een tabel met in de eerste kolom de naam van de persoon en in de volgende kolommen de jaartallen waarin de prijzen gewonnen werden. De personen moeten in alfabetische volgorde in de tabel opgelijst worden. Alle kolommen moeten van elkaar gescheiden worden door één enkele tab. Aan de tabel moet een hoofding toegevoegd worden, waarbij de kolommen vaste namen hebben die je kan afleiden uit onderstaande voorbeelden. Elke kolomhoofding moet onderlijnd worden met gelijkheidtekens zoals aangegeven in de voorbeelden.

Aan het shell script mogen geen argumenten doorgegeven worden, maar het shell script moet wel de volgende vier opties ondersteunen:

Enkel de personen die alle gevraagde prijzen gewonnen hebben mogen in het overzicht opgenomen worden, en het overzicht mag enkel kolommen bevatten voor de gevraagde prijzen. Merk op dat de kolommen met de jaartallen waarin de prijzen gewonnen werden steeds in een vaste volgorde moeten opgelijst worden (Emmy–Grammy–Oscar–Tony), ongeacht de volgorde waarin de opties aan het shell script doorgegeven worden. Bovendien moet het shell script de volgende foutafhandeling voorzien:

Tip: wellicht kan je voor het schrijven van het shell script handig gebruik maken van het Unix commando join.

Voorbeeld

Onderstaande voorbeeldsessie geeft aan hoe het shell script uitslover moet kunnen gebruikt worden. Hierbij gaan we ervan uit dat de tekstbestanden emmy.txt86, grammy.txt87, oscar.txt88 en tony.txt89 zich in de huidige directory bevinden.

$ uitslover -EGOT
NAAM ACTEUR     EMMY    GRAMMY  OSCAR   TONY
===========     ====    ======  =====   ====
Brooks Mel      1967    1998    1968    2001
Gielgud John    1991    1979    1981    1961
Goldberg Whoopi 2002    1985    1990    2002
Hamlisch Marvin 1995    1974    1973    1976
Hayes Helen     1953    1977    1932    1947
Hepburn Audrey  1993    1994    1953    1954
Lopez Robert    2008    2012    2014    2004
Moreno Rita     1977    1972    1961    1975
Nichols Mike    2001    1961    1967    1964
Rodgers Richard 1962    1960    1945    1950
Rudin Scott     1984    2012    2007    1994
Tunick Jonathan 1982    1988    1977    1997
$ echo $?
0
$ uitslover -TOE
NAAM ACTEUR     EMMY    OSCAR   TONY
===========     ====    =====   ====
Brooks Mel      1967    1968    2001
Gielgud John    1991    1981    1961
Goldberg Whoopi 2002    1990    2002
Hamlisch Marvin 1995    1973    1976
Hayes Helen     1953    1932    1947
Hepburn Audrey  1993    1953    1954
Lopez Robert    2008    2014    2004
Moreno Rita     1977    1961    1975
Nichols Mike    2001    1967    1964
Rodgers Richard 1962    1945    1950
Rudin Scott     1984    2007    1994
Tunick Jonathan 1982    1977    1997
$ uitslover -AGOT
Syntaxis: uitslover -EGOT
$ echo $?
1
$ uitslover -EGOT argument
Syntaxis: uitslover -EGOT
$ echo $?
1
$ uitslover -T
uitslover: minder dan twee awards opgegeven
$ echo $?
2