De Indische keuken bestaat uit een verscheidenheid aan regionale en traditionele keukens die afkomstig zijn uit het Indisch subcontinent1. Gezien de diversiteit in bodem, klimaat, cultuur, etnische groepen en beroepen, variëren deze keukens aanzienlijk en gebruiken ze lokaal verkrijgbare specerijen2, kruiden3, groenten4 en fruit5. Indisch eten wordt ook sterk beïnvloed door religie, in het bijzonder het hindoeïsme, culturele keuzes en tradities. Eeuwen van islamitische heerschappij, in het bijzonder door de Mongolen6, introduceerden ook gerechten als samosa7 en pilav8.

Historische gebeurtenissen zoals invasies, handelsbetrekkingen en kolonialisme hebben een rol gespeeld bij de introductie van bepaald voedsel in dit land. De Colombiaanse ontdekking9 van de Nieuwe Wereld10 bracht een aantal nieuwe groenten en fruit naar India. Een aantal hiervan, zoals aardappelen11, tomaten12, pepers13, pinda's14 en guave15, zijn in veel regio's van India hoofdbestanddelen geworden. De Indische keuken heeft de geschiedenis van de internationale betrekkingen gevormd. De specerijenhandel16 tussen India en Europa was de belangrijkste katalysator voor Europa's tijdperk van de grote ontdekkingen17. Specerijen werden gekocht uit India en verhandeld in Europa en Azië. De Indische keuken heeft andere keukens over de hele wereld beïnvloed, vooral die uit Europa (Groot-Brittannië in het bijzonder), het Midden-Oosten, Zuid-Afrika, Oost-Afrika, Zuidoost-Azië, Noord-Amerika, Mauritius, Fiji, Oceanië en het Caribisch gebied.

specerijen
Typische specerijen in een Indische kruidenierswinkel.

Basisingrediënten uit de Indische keuken zijn parelgierst18 (bājra), rijst19, volkorenmeel20 (aṭṭa) en een verscheidenheid aan linzen21, zoals masoor (meestal rode linzen), tuer (duivenerwten22), urad (zwarte gram23), en moong (mungbonen24). Linzen kunnen in hun geheel worden gebruikt, gepeld — bijvoorbeeld dhuli moong of dhuli urad — of gespleten. Gespleten linzen — of dahl25 — worden vaak gebruikt. Sommige peulvruchten, zoals channa of cholae (kikkererwten26), rajma (nierbonen27) en lobiya (zwartogenbonen28) komen veel voor, vooral in de noordelijke regio's. Channa en moong worden ook verwerkt tot bloem (besan29).

Veel Indische gerechten worden gekookt in plantaardige olie30, maar pindaolie31 is populair in Noord- en West-India, mosterdolie32 in Oost-India en kokosolie33 langs de westkust, vooral in Kerala34 en delen van zuidelijk Tamil Nadu35. Gingelly-olie (sesamolie36) komt veel voor in het zuiden omdat het een geurig, nootachtig aroma afgeeft. In de afgelopen decennia zijn ook zonnebloemolie37, saffloerolie38, katoenzaadolie39 en sojaolie40 populair geworden in heel India. Gehydrogeneerde41 plantaardige olie — bekend als Vanaspati ghee42 — is een ander populair kookmiddel. Op boter gebaseerde ghee43 — of deshi ghee — wordt vaak gebruikt, hoewel minder dan in het verleden. In de Indische keuken worden veel verschillende soorten vlees gebruikt, maar kip en schapenvlees worden het meest geconsumeerd. De consumptie van vis en rundvlees komt veel voor in sommige delen van India, maar ze worden niet algemeen geconsumeerd, behalve in kustgebieden, evenals in het noordoosten.

De belangrijkste en meest gebruikte kruiden en smaakstoffen in de Indische keuken zijn hele of poedervormige chilipeper44 (mirch, geïntroduceerd door de Portugezen45 uit Mexico in de 16e eeuw), zwart mosterdzaad46 (sarso), kardemom47 (elaichi), komijn48 (jeera), kurkuma49 (haldi), duivelsdrek50 (hing), gember51 (adrak), koriander52 (dhania) en knoflook53 (lasoon). Een populaire kruidenmegeling is garam masala54, een poeder dat doorgaans zeven gedroogde kruiden in een bepaalde verhouding bevat, waaronder zwarte kardemom55, kaneel56 (dalchini), kruidnagel57 (laung), komijn58 (jeera), zwarte peperkorrels59, korianderzaad60 en steranijs61. Elke culinaire regio heeft een onderscheidende garam masala-mengeling — individuele chef-koks kunnen ook hun eigen garam masala hebben. Goda masala is een vergelijkbare, zij het zoete, kruidenmengeling die populair is in Maharashtra62. Sommige bladeren die vaak als smaakstoffen worden gebruikt, zijn laurierblaadjes63 (tejpat64), korianderblaadjes65, fenegriekblaadjes66 (methi) en muntblaadjes67. Het gebruik van kerrieblaadjes68 en -wortels als smaakstoffen is typerend voor de Gujarati69 en de Zuid-Indische keuken70. Zoete gerechten worden vaak op smaak gebracht met extracten van kardemom, saffraan71, nootmuskaat72 en rozenblaadjes73.

Opgave

Het tekstbestand indian_food.csv74 bevat informatie over een aantal typische gerechten uit de Indische keuken. De eerste regel van het bestand bevat een hoofding. Elke volgende regel bevat informatie over één gerecht, bestaande uit de volgende negen velden die van elkaar gescheiden worden door een puntkomma (;):

  1. name: naam van het gerecht

  2. ingredients: lijst van gebruikte ingedriënten; ingrediënten worden telkens van elkaar gescheiden door een komma; voor en na de komma kunnen ook spaties voorkomen

  3. diet: soort dieet; vegetarian (vegetarisch) of non vegetarian (niet-vegetarisch)

  4. prep time: voorbereidingstijd (uitgedrukt in minuten)

  5. cook time: kooktijd (uitgedrukt in minuten)

  6. flavor profile: smaakprofiel van het gerecht

  7. course: gang van de maaltijd; starter (voorgerecht), main course (hoofdgerecht), dessert of snack

  8. state: deelstaat waar het gerecht onstond / populair is

  9. region: regio waarin de deelstaat gelegen is

De inhoud van een veld bevat zelf nooit puntkomma's.

Gevraagd wordt om — gebruikmakend van de teksteditors vi of vim — een reeks commando's op te stellen die achtereenvolgens de volgende opdrachten uitvoeren. Probeer voor elke opdracht zo weinig mogelijk commando's te gebruiken en zorg er voor dat elk van deze commando's bestaat uit zo weinig mogelijk tekens. De commando's mogen geen programmeerbare filters (bv. awk) gebruiken. Alle opdrachten moeten na elkaar uitgevoerd worden. De opdrachten mogen de eerste regel niet wijzigen, tenzij dit expliciet anders vermeld staat. Ter controle kan je gebruikmaken van de meegeleverde bestanden indian_food.i.csv (ZIP75), die telkens de inhoud van het bestand bevatten nadat de $$i$$-de opdracht werd uitgevoerd.

  1. Verwijder in alle velden de tekstfragmenten die tussen vierkante ([…]) of ronde ((…)) haakjes staan, inclusief de haakjes zelf (in de tekstfragmenten komen zelf geen haakjes voor). Verwijder alle spaties aan het begin en op het einde van alle velden. Verwijder alle spaties die onmiddellijk voor of na een komma staan. Zo moet

    name;ingredients;diet;prep time;cook time;flavor profile;course;state;region
    Balu shahi;maida flour, (plant-based) yogurt, oil, sugar;vegetarian(vegan);45;25;sweet;dessert;West Bengal;East
    Boondi;gram flour, ghee, sugar;vegetarian;80;30;sweet;dessert;Rajasthan;West
    Gajar ka halwa;carrots, milk(1%), sugar, ghee, cashews, raisins;vegetarian;15;60;sweet;dessert;Punjab;North
    Ghevar;flour, ghee, kewra, milk, clarified butter, sugar, almonds, pistachio, saffron, green cardamom;vegetarian;15;30;sweet;dessert;Rajasthan;West
    Gulab jamun;milk powder (1%), plain flour, baking powder, ghee, milk, sugar, water, rose water;vegetarian;15;40;sweet;dessert;West Bengal;East
    …

    bijvoorbeeld omgezet worden naar (indian_food.1.csv76)

    name;ingredients;diet;prep time;cook time;flavor profile;course;state;region
    Balu shahi;maida flour,yogurt,oil,sugar;vegetarian;45;25;sweet;dessert;West Bengal;East
    Boondi;gram flour,ghee,sugar;vegetarian;80;30;sweet;dessert;Rajasthan;West
    Gajar ka halwa;carrots,milk,sugar,ghee,cashews,raisins;vegetarian;15;60;sweet;dessert;Punjab;North
    Ghevar;flour,ghee,kewra,milk,clarified butter,sugar,almonds,pistachio,saffron,green cardamom;vegetarian;15;30;sweet;dessert;Rajasthan;West
    Gulab jamun;milk powder,plain flour,baking powder,ghee,milk,sugar,water,rose water;vegetarian;15;40;sweet;dessert;West Bengal;East
    …
  2. Voeg de laatste twee kolommen (state en region) samen tot één kolom met de naam state (region). In die kolom moet de naam van de deelstaat (state) staan, gevolgd door een spatie en de naam van de regio (region) tussen ronde haakjes. We krijgen dan (indian_food.2.csv77)

    name;ingredients;diet;prep time;cook time;flavor profile;course;state (region)
    Balu shahi;maida flour,yogurt,oil,sugar;vegetarian;45;25;sweet;dessert;West Bengal (East)
    Boondi;gram flour,ghee,sugar;vegetarian;80;30;sweet;dessert;Rajasthan (West)
    Gajar ka halwa;carrots,milk,sugar,ghee,cashews,raisins;vegetarian;15;60;sweet;dessert;Punjab (North)
    Ghevar;flour,ghee,kewra,milk,clarified butter,sugar,almonds,pistachio,saffron,green cardamom;vegetarian;15;30;sweet;dessert;Rajasthan (West)
    Gulab jamun;milk powder,plain flour,baking powder,ghee,milk,sugar,water,rose water;vegetarian;15;40;sweet;dessert;West Bengal (East)
    …
  3. Sorteer de gerechten volgens oplopende voorbereidingstijd (prep time). Gerechten met dezelfde voorbereidingstijd moeten volgens oplopende kooktijd (cook time) gesorteerd worden. Gerechten met dezelfde voorbereidings- en kooktijd moeten alfabetisch op naam (name) gesorteerd worden, zonder onderscheid te maken tussen hoofdletters en kleine letters. We krijgen dan (indian_food.3.csv78)

    name;ingredients;diet;prep time;cook time;flavor profile;course;state (region)
    Lassi;yogurt,milk,nuts,sugar;vegetarian;5;5;sweet;dessert;Punjab (North)
    Papad;urad dal,sev,lemon juice,chopped tomatoes;vegetarian;5;5;spicy;snack;Bihar (South)
    Papadum;lentils,black pepper,vegetable oil;vegetarian;5;5;spicy;snack;Kerala (South)
    Pinaca;brown rice,fennel seeds,grated coconut,black pepper,ginger powder;vegetarian;5;5;sweet;dessert;Goa (West)
    Khichu;rice flour,sesame seeds,baking soda,peanut oil;vegetarian;5;10;spicy;snack;Gujarat (West)
    …
  4. Voeg na het veld met de ingrediënten (ingredients) een nieuw veld met de naam contains sugar toe dat aangeeft of het gerecht suiker bevat en om welk soort suiker het gaat. Als de lijst met ingredienten (ingredients) een ingrediënt bevat waarin sugar voorkomt (bijvoorbeeld sugar syrup of powdered sugar), dan moet in het nieuw veld yes,ingredient ingevuld worden. Daarbij moet op de plaats van ingredient de naam van het ingrediënt met sugar gezet worden. Je mag ervan uitgaan dat er hoogstens één ingrediënt is waarin sugar voorkomt. Als er geen ingrediënten zijn die sugar bevatten, dan moet in het nieuw veld no ingevuld worden. We krijgen dan (indian_food.4.csv79)

    name;ingredients;contains sugar;diet;prep time;cook time;flavor profile;course;state (region)
    Lassi;yogurt,milk,nuts,sugar;yes,sugar;vegetarian;5;5;sweet;dessert;Punjab (North)
    Papad;urad dal,sev,lemon juice,chopped tomatoes;no;vegetarian;5;5;spicy;snack;Bihar (South)
    Papadum;lentils,black pepper,vegetable oil;no;vegetarian;5;5;spicy;snack;Kerala (South)
    Pinaca;brown rice,fennel seeds,grated coconut,black pepper,ginger powder;no;vegetarian;5;5;sweet;dessert;Goa (West)
    Khichu;rice flour,sesame seeds,baking soda,peanut oil;no;vegetarian;5;10;spicy;snack;Gujarat (West)
    …
  5. Als de lijst van ingrediënten meer dan drie ingrediënten bevat, hou dan enkel de eerste drie ingrediënten over en plaats drie puntjes (...) na de komma achter het derde ingrediënt. We krijgen dan (indian_food.5.csv80)

    name;ingredients;contains sugar;diet;prep time;cook time;flavor profile;course;state (region)
    Lassi;yogurt,milk,nuts,...;yes,sugar;vegetarian;5;5;sweet;dessert;Punjab (North)
    Papad;urad dal,sev,lemon juice,...;no;vegetarian;5;5;spicy;snack;Bihar (South)
    Papadum;lentils,black pepper,vegetable oil;no;vegetarian;5;5;spicy;snack;Kerala (South)
    Pinaca;brown rice,fennel seeds,grated coconut,...;no;vegetarian;5;5;sweet;dessert;Goa (West)
    Khichu;rice flour,sesame seeds,baking soda,...;no;vegetarian;5;10;spicy;snack;Gujarat (West)
    …