A kedvenc zenéink adatait egy playlist.csv
nevű állományban tároljuk (letöltés). A fájl egyes soraiban szereplő, pontosvesszővel elválasztott adatok sorban:
A bemeneti fájl első sora egy fejlécsor, amit nem kell feldolgozni (csupán tájékoztató jelleggel bír). Oldd meg az alábbi feladatokat csővezeték (pipeline) használatával!
A bemeneti fájl első sorában szereplő fejlécet nem szeretnénk feldolgozni. Egy alkalmas Linux parancs segítségével hozz létre egy playlist2.csv
nevű állományt, amelybe írd bele a playlist.csv
fájl tartalmát az első sor nélkül!
cat
paranccsal.
> cat playlist.csv Eloado;Cim;Mufaj;Hossz (masodpercekben) Rick Astley;Never Gonna Give You Up;pop;213 Imagine Dragons;Thunder;pop;204 Dragonforce;Through the Fire and Flames;metal;445 Boney M.;Rasputin;pop;284 Steppenwolf;Born To Be Wild;rock;216 ...
Az első sorban szereplő fejléc eltávolítása megoldható a gyakorlati anyagban is tárgyalt tail -n <+szám>
paranccsal, amely a szám
-adik sortól kezdve írja ki a fájl tartalmát. Mivel most az első sortól szeretnénk megszabadulni, ezért a második sortól kezdődően fogjuk kiíratni a fájlban található tartalmat.
Egy pipeline segítségével fűzzük hozzá a cat playlist.csv
parancshoz a tail -n +2
parancsot (hiszen a cat
parancs kimenetén (a fájl tartalmán) szeretnénk végrehajtani az első sor "eltávolítását" végző parancsot)!
> cat playlist.csv | tail -n +2 Rick Astley;Never Gonna Give You Up;pop;213 Imagine Dragons;Thunder;pop;204 Dragonforce;Through the Fire and Flames;metal;445 Boney M.;Rasputin;pop;284 Steppenwolf;Born To Be Wild;rock;216 ...
Remek, most már megkaptuk a bemeneti fájl tartalmát az első sor nélkül! Már csak annyi a feladatunk, hogy az első sor "kidobása" után kapott tartalmat beleírjuk egy playlist2.csv
fájlba.
A >
operátorral egyszerűen beleírhatjuk az elkészített pipeline kimenetét egy megadott nevű fájlba. Ha a kimeneti fájl nem létezik, akkor ez a konstrukció automatikusan létrehozza azt, és beleírja a kimenetet.
A feladat megoldása tehát (ellenőrzésképpen kiíratva a létrehozott fájl tartalmát):
> cat playlist.csv | tail -n +2 > playlist2.csv > cat playlist2.csv Rick Astley;Never Gonna Give You Up;pop;213 Imagine Dragons;Thunder;pop;204 Dragonforce;Through the Fire and Flames;metal;445 Boney M.;Rasputin;pop;284 Steppenwolf;Born To Be Wild;rock;216 Powerwolf;Incense and Iron;metal;240 Smash Mouth;All Star;rock;237 Nirvana;Smells Like Teen Spirit;rock;279 Gloryhammer;The Unicorn Invasion of Dundee;metal;265 Powerwolf;We Are The Wild;metal;221 Imagine Dragons;Radioactive;rock;188 Dschinghis Khan;Moskau;pop;275 Dschinghis Khan;Dschinghis Khan;pop;185 Bonnie Tyler;Total Eclipse of the Heart;pop;334 Gopnik McBlyat;Snakes In Tracksuits;hardbass;261 John Farnham;Thunder In Your Heart;rock;234 Ismeretlen;Perfectly Cut Screamz;metal;20
Írj csővezetéket, ami kiírja a konzolra, hogy hány zene adatait tartalmazza a bemeneti fájl! Tehát azt kell kiíratni, hogy az előző feladatban létrehozott playlist2.csv
hány sorból áll!
playlist2.csv
fájllal fogunk dolgozni. Első lépésként megint kiírathatjuk a fájl tartalmát, ezzel biztosan nem rontunk el semmit.
> cat playlist2.csv Rick Astley;Never Gonna Give You Up;pop;213 Imagine Dragons;Thunder;pop;204 Dragonforce;Through the Fire and Flames;metal;445 Boney M.;Rasputin;pop;284 Steppenwolf;Born To Be Wild;rock;216 ...
A feladatunk megszámolni, hogy hány sorból áll a fájl. Ha egy pipeline-os feladatban valamit számolni kell, akkor jusson eszünkbe a wc
parancs! Ennek a fontosabb kapcsolói, amiket a gyakorlaton tárgyalunk:
-l
: a sorok száma a fájlban-w
: a szavak száma a fájlban-c
: a bájtok száma a fájlbanMivel mi a sorok számára vagyunk kíváncsiak, ezért nekünk a -l
kapcsoló fog kelleni. Egy pipeline segítségével fűzzük hozzá a cat playlist2.csv
parancshoz a wc -l
parancsot (hiszen a cat
parancs kimenetén szeretnénk végrehajtani a sorok megszámolását)!
A feladat megoldása tehát:
> cat playlist2.csv | wc -l 17
Írj csővezetéket, ami kiírja a konzolra, hogy hány különböző előadó neve szerepel a bemeneti fájlban!
playlist2.csv
fájl tartalmát!
> cat playlist2.csv Rick Astley;Never Gonna Give You Up;pop;213 Imagine Dragons;Thunder;pop;204 Dragonforce;Through the Fire and Flames;metal;445 Boney M.;Rasputin;pop;284 Steppenwolf;Born To Be Wild;rock;216 ...
Az előadók nevei minden sorban a legelsők a pontosvesszővel elválasztott adatok közül. A cut
paranccsal feldarabolhatjuk a fájl sorait oszlopokra adott karakterek mentén, és lekérhetjük egy (vagy több) oszlop tartalmát.
-d
("delimiter") kapcsolóval megadjuk, hogy milyen karakterek mentén szeretnénk darabolni. Ez most a pontosvessző lesz, hiszen a fájl soraiban szereplő adatok pontosvesszővel vannak elválasztva.-f
("fields") kapcsolóval megadjuk, hogy a feldarabolás után hányadik oszlopot szeretnénk lekérni. Most az első oszlop fog kelleni, hiszen ez tartalmazza az előadók nevét.A pipeline-unk eddig a következőképpen néz ki:
> cat playlist2.csv | cut -d ';' -f 1 Rick Astley Imagine Dragons Dragonforce Boney M. Steppenwolf Powerwolf Smash Mouth Nirvana Gloryhammer Powerwolf Imagine Dragons Dschinghis Khan Dschinghis Khan Bonnie Tyler ...
Nagyszerű, megvannak az előadók nevei! Látható viszont, hogy a parancs kimenetében néhány előadó neve többször is szerepel (pl. "Imagine Dragons", "Powerwolf", "Dschinghis Khan"). Mivel a feladat szövege a különböző előadók számára kíváncsi, ezért jó lenne ezeket az ismétlődéseket megszüntetnünk.
Az első gondolatunk a uniq
parancs lehet:
> cat playlist2.csv | cut -d ';' -f 1 | uniq Rick Astley Imagine Dragons Dragonforce Boney M. Steppenwolf Powerwolf Smash Mouth Nirvana Gloryhammer Powerwolf Imagine Dragons Dschinghis Khan Bonnie Tyler ...
Hát, ez közel sem lett tökéletes, hiszen az "Imagine Dragons" és "Powerwolf" előadónevek még mindig előfordulnak többször is. Egyedül a "Dschinghis Khan" ismétlődését sikerült megszüntetnünk a uniq
használatával.
Miért van ez így? A uniq
-ról fontos tudni, hogy csak a közvetlenül egymás utáni ismétlődéséket szünteti meg. Mivel a bemeneti fájlban az egyik "Dschinghis Khan" közvetlenül a másik "Dschinghis Khan" után szerepelt, ezért ezzel a uniq
éppen el tudott bánni.
Hogyan lehetne vajon elérni, hogy ne csak az egymás utáni ismétlődéseket, hanem az összes ismétlődést megszüntessük? Erre a következő trükköt tudjuk használni: a sort
paranccsal először ábécé sorrendbe rendezzük az előadók neveit (így az ismétlődő előadónevek garantáltan közvetlenül egymást fogják követni), majd csak ezután használjuk a uniq
-ot.
> cat playlist2.csv | cut -d ';' -f 1 | sort | uniq Boney M. Bonnie Tyler Dragonforce Dschinghis Khan Gloryhammer Gopnik McBlyat Imagine Dragons Ismeretlen John Farnham Nirvana Powerwolf Rick Astley Smash Mouth Steppenwolf
Szuper, most már mindenki neve csak egyszer fordul elő! Már csak meg kell mondani, hogy hány előadót kaptunk így, tehát lényegében azt kell megszámolni, hogy az eddigi pipeline kimenete hány sorból áll. Erre a korábban tárgyalt wc -l
parancsot használhatjuk.
A feladat megoldása tehát:
> cat playlist2.csv | cut -d ';' -f 1 | sort | uniq | wc -l 14
Írj csővezetéket, ami kiírja a konzolra a playlist2.csv
fájl 10. sorában található zenének a címét!
head
és tail
parancsokra:
head -<szám>
: kiírja egy több sorból álló szöveg első <szám>
darab soráttail -<szám>
: kiírja egy több sorból álló szöveg utolsó <szám>
darab sorát.Induljunk ki abból, hogy kiíratjuk a fájl tartalmát a cat
paranccsal, majd vesszük a fájl tartalmából az első 10 sort a head -10
paranccsal!
> cat playlist2.csv | head -10 Rick Astley;Never Gonna Give You Up;pop;213 Imagine Dragons;Thunder;pop;204 Dragonforce;Through the Fire and Flames;metal;445 Boney M.;Rasputin;pop;284 Steppenwolf;Born To Be Wild;rock;216 Powerwolf;Incense and Iron;metal;240 Smash Mouth;All Star;rock;237 Nirvana;Smells Like Teen Spirit;rock;279 Gloryhammer;The Unicorn Invasion of Dundee;metal;265 Powerwolf;We Are The Wild;metal;221
Nekünk most viszont nem az első 10 sorra, hanem csupán a tizedik sorra van szükségünk. Egy kis gondolkodással rájöhetünk, hogy ha az első 10 sorból vesszük az utolsó sort, akkor pont a tizedik sort fogjuk megkapni. A tail -1
paranccsal megkaphatjuk az előző pipeline kimenetének az utolsó sorát.
> cat playlist2.csv | head -10 | tail -1 Powerwolf;We Are The Wild;metal;221
Oké, a nehezén túlvagyunk, már csak az eredményül kapott sorból kellene lekérnünk a zene címét. Ez már viszonylag egyszerű: a cut
paranccsal feldaraboljuk a sort pontosvesszők mentén, és vesszük a zenecímet tartalmazó 2. oszlopot.
A feladat megoldása tehát:
> cat playlist2.csv | head -10 | tail -1 | cut -d ';' -f 2 We Are The Wild
Írj csővezetéket, ami kiírja a konzolra a bemeneti fájlban található leghosszabb zene hosszát (másodpercekben)!
playlist2.csv
-ből szeretnénk kiíratni valamit (a leghosszabb zene hosszát), ezért kiindulásképpen kiírathatjuk a teljes fájl tartalmát.
> cat playlist2.csv Rick Astley;Never Gonna Give You Up;pop;213 Imagine Dragons;Thunder;pop;204 Dragonforce;Through the Fire and Flames;metal;445 Boney M.;Rasputin;pop;284 Steppenwolf;Born To Be Wild;rock;216 ...
Mivel minden sorból csak a zene hossza érdekel minket, ezért a cut
paranccsal ismételten feldarabolhatjuk a sorok tartalmát pontosvesszők mentén. A zene hosszát a 4. oszlop tartalmazza, ezért ezt fogjuk lekérni.
> cat playlist2.csv | cut -d ';' -f 4 213 204 445 284 216 ...
Oké, megkaptuk a zenék hosszát másodpercekben. Ahhoz, hogy meg tudjuk állapítani, hogy hány másodperc hosszú a leghosszabb zene, rendeznünk kell a zenék hosszát. Ha rendezni szeretnénk valamit, akkor az első gondolatunk a sort
parancs lehet.
> cat playlist2.csv | cut -d ';' -f 4 | sort 185 188 20 204 213 216 221 ...
Ha megfigyeljük a fenti pipeline kimentét, akkor egy érdekes jelenséget láthatunk: a sort
a 20-as értéket a 188 és a 204 közé rendezte. Ennek az az oka, hogy a sort
parancs alapértelmezés szerint szövegekként kezeli a rendezendő elemeket, ezért ábécé sorrendbe rendezi azokat (ha belegondolunk, akkor a furcsaság, amit fentebb kaptunk, egy érvényes ábécé sorrend).
A szám típusú adatokat viszont természetesen nem ábécé sorrendbe, hanem növekvő sorrendbe szeretnénk rendezni. Ebben az esetben (ha számokat rendezünk) használjuk a sort
parancs -n
("numeric sort") kapcsolóját!
> cat playlist2.csv | cut -d ';' -f 4 | sort -n 20 185 188 204 213 216 221 234 237 240 261 265 275 279 284 334 445
Remek, így már ténylegesen növekvő sorrendbe raktuk a zenék hosszát! Már csak a leghosszabb zene hosszát kell lekérnünk, ami a növekvő sorrendben szereplő számok közül az utolsó lesz. Az utolsó szám lekéréséhez használjuk a korábban tárgyalt tail -1
parancsot!
A feladat megoldása tehát:
> cat playlist2.csv | cut -d ';' -f 4 | sort -n | tail -1 445
Írj csővezetéket, ami kiírja a konzolra, hogy hány olyan zene van a bemeneti fájlban, amelynek műfaja pop
! Feltehetjük, hogy a bemeneti fájl egyes soraiban a pop
szöveg csak a műfajok oszlopában fordul elő.
playlist2.csv
fájlból csak azokra a sorokra van szükségünk, amelyek tartalmazzák a pop
szöveget (hiszen csak a popzenék érdekelnek minket).
Ha egy fájl bizonyos sorairól szeretnénk eldönteni, hogy illeszkednek-e egy megadott mintára, akkor az egrep
parancsot használjuk. A parancs első paramétere a minta, amire illesztünk (amilyen szöveget keresünk a fájl soraiban), a második paraméter pedig a vizsgált fájl neve.
> egrep 'pop' playlist2.csv Rick Astley;Never Gonna Give You Up;pop;213 Imagine Dragons;Thunder;pop;204 Boney M.;Rasputin;pop;284 Dschinghis Khan;Moskau;pop;275 Dschinghis Khan;Dschinghis Khan;pop;185 Bonnie Tyler;Total Eclipse of the Heart;pop;334
Látható, hogy a parancs hatására már csak a pop zenék adatai jelennek meg a konzolon. Már csak meg kell számolnunk, hogy hány zenét kaptunk eredményül. Ezt a szokásos módon, a wc -l
paranccsal tehetjük meg (megszámoljuk, hogy az előző pipeline hány soros kimenetet adott eredményül):
> egrep 'pop' playlist2.csv | wc -l 6
Megjegyzés: Az egrep
parancsnak van egy -c
("count") kapcsolója is, ami megmondja, hogy hány sort válogatott ki a parancs. Ennek a használatával a fenti megoldás egy picit egyszerűsíthető.
> egrep -c 'pop' playlist2.csv 6
Írj csővezetéket, ami kiírja a konzolra, hogy hány másodperc hosszú a leghosszabb olyan zene, amelynek műfaja rock
! Feltehetjük, hogy a bemeneti fájl egyes soraiban a rock
szöveg csak a műfajok oszlopában fordul elő.
Először is válogassuk ki a playlist2.csv
-ből a rockzenéket! Ehhez az egrep
paranccsal keressük meg az összes olyan sort a fájlban, amely tartalmazza a rock
szöveget!
> egrep 'rock' playlist2.csv Steppenwolf;Born To Be Wild;rock;216 Smash Mouth;All Star;rock;237 Nirvana;Smells Like Teen Spirit;rock;279 Imagine Dragons;Radioactive;rock;188 John Farnham;Thunder In Your Heart;rock;234
Rendben, most már kiválogattuk az összes rockzenét. Már csak meg kell határoznunk ezek közül a leghosszabb zenének a hosszát. Az 5. feladat megoldása alapján ezt a következőképpen tehetjük meg:
cut -d ';' -f 4
).sort -n
).tail -1
).A feladat megoldása tehát:
> egrep 'rock' playlist2.csv | cut -d ';' -f 4 | sort -n | tail -1 279
Írj csővezetéket, ami kiírja egy out.txt
nevű fájlba azoknak a zenéknek a címét csupa nagybetűkkel, ábécé sorrendben, amelyek tartalmazzák a Thunder
vagy Heart
szövegek legalább egyikét! Feltehetjük, hogy a bemeneti fájl egyes soraiban ez a két szöveg csak a zenék címében fordul elő. (5 pont)
Mivel ismét csak a fájl bizonyos sorai kellenek nekünk, ezért továbbra is az egrep
parancs lesz a barátunk. Ha egy feladatban nem csak 1 mintára illesztünk (most kapásból 2 szöveget is keresünk a fájl soraiban: a "Thunder" és a "Heart" szövegeket), akkor érdemes használni az egrep
parancs -e
kapcsolóját ezek megadásakor.
> egrep -e 'Thunder' -e 'Heart' playlist2.csv Imagine Dragons;Thunder;pop;204 Bonnie Tyler;Total Eclipse of the Heart;pop;334 John Farnham;Thunder In Your Heart;rock;234
Látható, hogy ténylegesen csak azokat a zenéket kaptuk meg, amelyek címe tartalmazza a "Thunder" és a "Heart" szövegek legalább egyikét. A feladat a zenék címeire kíváncsi, ezért a zenék címét a cut
paranccsal lekérdezzük (a zenecím a pontosvesszőkkel elválasztott adatok közül minden sorban a második).
> egrep -e 'Thunder' -e 'Heart' playlist2.csv | cut -d ';' -f 2 Thunder Total Eclipse of the Heart Thunder In Your Heart
A következő feladatunk az lenne, hogy az így kapott kimenetet csupa nagybetűssé alakítsuk. Ezt a tr a-z A-Z
paranccsal tehetjük meg, ami átalakítja a szövegben szereplő összes kibetűt (a-z) nagybetűvé (A-Z).
> egrep -e 'Thunder' -e 'Heart' playlist2.csv | cut -d ';' -f 2 | tr a-z A-Z THUNDER TOTAL ECLIPSE OF THE HEART THUNDER IN YOUR HEART
Végezetül, ábécé sorrendbe kell rendeznünk az így kapott, nagybetűsített zenecímeket. Ezt a korábban látott sort
paranccsal tudjuk megtenni.
> egrep -e 'Thunder' -e 'Heart' playlist2.csv | cut -d ';' -f 2 | tr a-z A-Z | sort THUNDER THUNDER IN YOUR HEART TOTAL ECLIPSE OF THE HEART
Remek, most már a pipeline-nal készen vagyunk, kiírattuk a megfelelő zenék címét csupa nagybetűkkel, ábécé sorrendben a konzolra. Már csak annyi a dolgunk, hogy a kapott kimenetet beleirányítsuk egy out.txt
nevű fájlba a korábban látott >
operátorral.
A feladat megoldása tehát (ellenőrzésképpen kiíratva a létrehozott fájl tartalmát):
> egrep -e 'Thunder' -e 'Heart' playlist2.csv | cut -d ';' -f 2 | tr a-z A-Z | sort > out.txt > cat out.txt THUNDER THUNDER IN YOUR HEART TOTAL ECLIPSE OF THE HEART
Az out.txt
fájlra vonatkozó jogosultságokat állítsd be a következők szerint:
out.txt
adatait részletesen, az ls -l
paranccsal!
> ls -l out.txt -rw-r--r-- 1 cservz cservz 57 Dec 23 13:40 out.txt
A listázás első oszlopában található -rw-r--r--
szöveg fog minket érdekelni, ez kódolja el a különböző felhasználói csoportok jogosultságait a fájlra vonatkozóan:
d
betű szerepelne, akkor egy könyvtárral lenne dolgunk).Az egyes felhasználói csoportoknak a jogosultságait az rwx
karakterhármas jelzi. Ezek rendre az olvasási (read
), írási (write
) és futtatási (execute
) jogosultságokat jelölik a fájlra vonatkozóan. Ha valamelyik karakter helyén kötőjel szerepel, akkor az azt jelenti, hogy olyan jogosultsága nincs az adott felhasználói csoportnak az állományra.
A chmod
paranccsal megváltoztathatjuk a fájlra vonatkozó jogosultságokat:
u
("user", a tulajdonos), g
("group", a csoport), o
("others", a többiek), a
("all", mindenki).+
) vagy elvenni (-
) szeretnénk jogosultságot.r
, w
, x
).A fájl tulajdonosának csak olvasási és írási jogot kell adnunk a feladatleírás alapján. Ha megnézzük az ls -l
kimenetét, akkor látható, hogy ezzel már készen is vagyunk, hiszen a tulajdonos jogosultságai: rw-
(olvasási és írási joga van, de futtatási joga nincs).
A csoportnak szintén csak olvasási és írási joga kell, hogy legyen a fájlra. A csoport jogosultságai: r--
, tehát csak az olvasási jog van meg. Adjunk írási jogot (w
) a csoportnak (g
) a fájlra!
> chmod g+w out.txt
A többiek jogosultsága a fájlra vonatkozóan: r--
, ami olvasási jogosultságot jelent. Mivel a feladat azt kérte, hogy a többiek ne rendelkezzenek semmilyen jogosultsággal, ezért az olvasási jogot (r
) el kell vennünk a többiektől (mivel jogot veszünk el, itt pluszjel helyett mínuszjelet használunk).
> chmod o-r out.txt
A fájlra vonatkozó jogosultságok most már megfelelnek a feladatleírásnak.
> ls -l out.txt -rw-rw---- 1 cservz cservz 57 Dec 23 13:40 out.txt
Írj csővezetéket, ami a playlist2.csv
fájlban található előadóneveket és zenecímeket Napóleon-kódolással titkosítja, és a titkosított adatokat beleírja egy napoleon_encoded.csv
nevű állományba!
A Napóleon-kódolás minden egyes kis- és nagybetűt megváltoztat úgy, hogy helyettesíti az ábécében utána következő betűvel. Tehát az a
betűből b
betű lesz, a g
-ből h
, a z
után pedig ismét a
betű következik. A kódolás csak a betűket módosítja, az egyéb karaktereket (pl. szóköz, pontosvessző, számjegyek, speciális írásjelek) nem. Feltehetjük, hogy az inputban szereplő betűkben nem szerepelnek ékezetek.
cut
parancs segítségével.
> cat playlist2.csv | cut -d ';' -f 1-2 Rick Astley;Never Gonna Give You Up Imagine Dragons;Thunder Dragonforce;Through the Fire and Flames Boney M.;Rasputin Steppenwolf;Born To Be Wild ...
Ha egy-egy karaktert szeretnénk lecserélni valamilyen másik karakterre, akkor a tr
("transform") parancsot használjuk. Vele már találkoztunk az előző feladatban, ott a kisbetűket alakítottuk át nagybetűkké.
Most az összes betűt le szeretnénk cserélni az ábécében utána következőre.
tr
parancs első paraméterében megadjuk a lecserélendő betűket, ami az összes kisbetű és összes nagybetű lesz: a-zA-Z
.b-zaB-ZA
(hiszen "a" helyett "b" lesz, "b" helyett "c", "y" helyett "z", "z" helyett pedig "a" - ugyanezt felírjuk a nagybetűkre is).Az előadóneveket és zenecímeket Napóleon-kódolással titkosító pipeline tehát:
> cat playlist2.csv | cut -d ';' -f 1-2 | tr a-zA-Z b-zaB-ZA Sjdl Btumfz;Ofwfs Hpoob Hjwf Zpv Vq Jnbhjof Esbhpot;Uivoefs Esbhpogpsdf;Uispvhi uif Gjsf boe Gmbnft Cpofz N.;Sbtqvujo Tufqqfoxpmg;Cpso Up Cf Xjme ...
Az így kapott kimenetet már csak bele kell írnunk egy napoleon_encoded.csv
fájlba. A feladat megoldása tehát:
> cat playlist2.csv | cut -d ';' -f 1-2 | tr a-zA-Z b-zaB-ZA > napoleon_encoded.csv > cat napoleon_encoded.csv Sjdl Btumfz;Ofwfs Hpoob Hjwf Zpv Vq Jnbhjof Esbhpot;Uivoefs Esbhpogpsdf;Uispvhi uif Gjsf boe Gmbnft Cpofz N.;Sbtqvujo Tufqqfoxpmg;Cpso Up Cf Xjme Qpxfsxpmg;Jodfotf boe Jspo Tnbti Npvui;Bmm Tubs Ojswbob;Tnfmmt Mjlf Uffo Tqjsju Hmpszibnnfs;Uif Vojdpso Jowbtjpo pg Evoeff Qpxfsxpmg;Xf Bsf Uif Xjme Jnbhjof Esbhpot;Sbejpbdujwf Etdijohijt Libo;Nptlbv Etdijohijt Libo;Etdijohijt Libo Cpoojf Uzmfs;Upubm Fdmjqtf pg uif Ifbsu Hpqojl NdCmzbu;Toblft Jo Usbdltvjut Kpio Gbsoibn;Uivoefs Jo Zpvs Ifbsu Jtnfsfumfo;Qfsgfdumz Dvu Tdsfbna
Írj csővezetéket, ami az előző feladatban létrehozott napoleon_encoded.csv
fájl adatait visszafejti (dekódolja a Napóleon-kódolást), és a visszafejtett adatokat beleírja a napoleon_decoded.csv
nevű állományba!
napoleon_encoded.csv
fájl tartalmát visszafejtsük, és a "dekódolt" tartalmat beletegyük egy napoleon_decoded.csv
nevű fájlba.
A Napóleon-kódolás visszafejtése úgy történik, hogy a tr
paranccsal az ábécé összes kis- és nagybetűjét lecseréljük az őt megelőző betűre ("a" helyett "z"-t írunk, "b" helyett "a"-t, "z" helyett "y"-t): tr a-zA-Z za-yZA-Y
.
A feladat megoldása tehát:
> cat napoleon_encoded.csv | tr a-zA-Z za-yZA-Y > napoleon_decoded.csv > cat napoleon_decoded.csv Rick Astley;Never Gonna Give You Up Imagine Dragons;Thunder Dragonforce;Through the Fire and Flames Boney M.;Rasputin Steppenwolf;Born To Be Wild Powerwolf;Incense and Iron Smash Mouth;All Star Nirvana;Smells Like Teen Spirit Gloryhammer;The Unicorn Invasion of Dundee Powerwolf;We Are The Wild Imagine Dragons;Radioactive Dschinghis Khan;Moskau Dschinghis Khan;Dschinghis Khan Bonnie Tyler;Total Eclipse of the Heart Gopnik McBlyat;Snakes In Tracksuits John Farnham;Thunder In Your Heart Ismeretlen;Perfectly Cut Screamz