De Indische keuken bestaat uit een verscheidenheid aan regionale en traditionele keukens die afkomstig zijn uit het Indisch subcontinent. Gezien de diversiteit in bodem, klimaat, cultuur, etnische groepen en beroepen, variëren deze keukens aanzienlijk en gebruiken ze lokaal verkrijgbare specerijen, kruiden, groenten en fruit. 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 Mongolen, introduceerden ook gerechten als samosa en pilav.

Historische gebeurtenissen zoals invasies, handelsbetrekkingen en kolonialisme hebben een rol gespeeld bij de introductie van bepaald voedsel in dit land. De Colombiaanse ontdekking van de Nieuwe Wereld bracht een aantal nieuwe groenten en fruit naar India. Een aantal hiervan, zoals aardappelen, tomaten, pepers, pinda's en guave, zijn in veel regio's van India hoofdbestanddelen geworden. De Indische keuken heeft de geschiedenis van de internationale betrekkingen gevormd. De specerijenhandel tussen India en Europa was de belangrijkste katalysator voor Europa's tijdperk van de grote ontdekkingen. 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

Basisingrediënten uit de Indische keuken zijn parelgierst (bājra), rijst, volkorenmeel (aṭṭa) en een verscheidenheid aan linzen, zoals masoor (meestal rode linzen), tuer (duivenerwten), urad (zwarte gram), en moong (mungbonen). Linzen kunnen in hun geheel worden gebruikt, gepeld — bijvoorbeeld dhuli moong of dhuli urad — of gespleten. Gespleten linzen — of dahl — worden vaak gebruikt. Sommige peulvruchten, zoals channa of cholae (kikkererwten), rajma (nierbonen) en lobiya (zwartogenbonen) komen veel voor, vooral in de noordelijke regio's. Channa en moong worden ook verwerkt tot bloem (besan).

Veel Indische gerechten worden gekookt in plantaardige olie, maar pindaolie is populair in Noord- en West-India, mosterdolie in Oost-India en kokosolie langs de westkust, vooral in Kerala en delen van zuidelijk Tamil Nadu. Gingelly-olie (sesamolie) komt veel voor in het zuiden omdat het een geurig, nootachtig aroma afgeeft. In de afgelopen decennia zijn ook zonnebloemolie, saffloerolie, katoenzaadolie en sojaolie populair geworden in heel India. Gehydrogeneerde plantaardige olie — bekend als Vanaspati ghee — is een ander populair kookmiddel. Op boter gebaseerde ghee — 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 chilipeper (mirch, geïntroduceerd door de Portugezen uit Mexico in de 16e eeuw), zwart mosterdzaad (sarso), kardemom (elaichi), komijn (jeera), kurkuma (haldi), duivelsdrek (hing), gember (adrak), koriander (dhania) en knoflook (lasoon). Een populaire kruidenmegeling is garam masala, een poeder dat doorgaans zeven gedroogde kruiden in een bepaalde verhouding bevat, waaronder zwarte kardemom, kaneel (dalchini), kruidnagel (laung), komijn (jeera), zwarte peperkorrels, korianderzaad en steranijs. 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 Maharashtra. Sommige bladeren die vaak als smaakstoffen worden gebruikt, zijn laurierblaadjes (tejpat), korianderblaadjes, fenegriekblaadjes (methi) en muntblaadjes. Het gebruik van kerrieblaadjes en -wortels als smaakstoffen is typerend voor de Gujarati en de Zuid-Indische keuken. Zoete gerechten worden vaak op smaak gebracht met extracten van kardemom, saffraan, nootmuskaat en rozenblaadjes.

Opgave

Het tekstbestand indian_food.csv 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 (ZIP), 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.csv)

    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.csv)

    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.csv)

    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.csv)

    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.csv)

    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)
    …