HTML

Bagoj úr blogja

Kíváncsi Bagoj befigyel a Linux belsejébe, illetve különféle Linux terjesztéseket próbál ki. Ha jó napja van, scriptet ír Neked.

Friss topikok

Újabb sed agyszülemények

2012.07.01. 00:28 bagoj ur

Egy konkrét kérés nyomán volt szükségem néhány gyors szöveg manipulálásra, amelyhez a sed (stream editor) segítségét választottam. A kérés egy utónév kereső és kalkulátor lefejesztése volt, amelyhez szükségem volt természetesen az adatbázisra. Az összes, Magyar Tudományos Akadémia által jóváhagyott nevet nyilvánosan, PDF formátumban le lehet tölteni a honlapjukról (khm.... mint az közismert).

A Zathura nevű PDF olvasó játszva kimásolta a neveket egy szöveges fájlba; mindössze annyi volt zavaró, hogy belemásolta az oldalszámot és a kezdőbetűt jelölő fejezetcímeket (A, B, C stb) is. Mivel kétbetűs névről nem tudok (a Leó, Lea, Mia és ezek a legrövidebbek), ezért azokat a sorokat töröltem a fájlból, amelyek összesen 1 vagy 2 karakterből állnak (így a kettősbetű jelölőket is kizártam *):

cat tmp.txt | sed '/^.$/d' | sed '/^..$/d' > lanynevek.txt

Szükségem volt még a gyakran kiosztott nevekre - a szoftver bármilyen okos egyezést meg tud találni, kivéve azt, hogy a szülőknek az utóbbi időben most éppen mely nevek tetszettek. A www.nevnaptar.eu oldalon fent vannak a népszerű nevek. Gyorsan kijelöltem, ctrl+Cecil, ctrl+Vazul, de sajnos a szövegfájlba már így kerültek be a nevek (mindenféle egyéb szemét is jött velük, ráadásul csupa nagybetűsek voltak):

1.
JÁZMIN
    1 559     334
2.
ANNA
    1 255     659
3.
HANNA
    1 207     251

A legpraktikusabbnak azt tartottam, ha a számozott sorokat kihagyom, ezért csak azokat a sorokat írattam ki, amelyekben betűk szerepelnek (ugye nevek esetén viszonylag ritkán bukkannak fel számok, hacsak nem valakit T1b0r-nak hívnak :-)). Persze szórakozhattam volna mindenféle 'n;d;n;n;d;n;d' parancsokkal is... :)

sed -n '/^[A-Z]*$/p' gyakorinevek.txt > gyn_temp.txt

A nagybetűs nevek ettől még megmaradtak. Kapitalizáltam őket úgy, hogy az első betűre match-eltem és azt változatlanul kiírattam, a többit pedig a \L direktívával kisbetűssé alakítottam.

sed 's/^\([A-Z]\)\([A-Z]*\)$/\1\L\2/' gyn_temp.txt > gyakorinevek.txt

Itt ugye a visszahivatkozásokat hívtam segítségül.

Ha összegezzük a fentieket, lényegében 3 sorból előállt két adatbázis, amiben később tudtam keresgélni. Természetesen ezeket a sort paranccsal még rendeztem a felhasználás előtt.

Zisz iz de póver ov kommandlájn interfész.

*Benne maradt a Dzs, mint utólag kiderült... :)

3 komment

Címkék: szkript parancssor sed

A bejegyzés trackback címe:

https://bagojur.blog.hu/api/trackback/id/tr724590344

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

apcapapi 2013.08.21. 07:47:21

8<-----------------
A Zathura nevű PDF olvasó játszva kimásolta a neveket egy szöveges fájlba;
8<-----------------
Errőlegy kicsit bővebben írnál? Kerestem mindenfelé valami segítséget a zathura-hoz,de csak képek és csatolmányok exportját találtam. Pedig gyakren lenne szükségem pdf-ből kiszedni cuccokat.

Előre is köszi!

bagoj ur 2014.01.16. 14:20:24

@apcapapi: Nem tudom aktuális-e még, de én a ctrl+Cecil, ctrl+Vazul mágikus kombinációra gondoltam, nem volt szöveg export funkció vagy hasonló. De ha ilyesmire van szükség, esetleg pdftotext csomag?

apcapapi 2014.01.18. 14:04:23

Én meg valami olyasmit kerestem. Hiába no, ha egyszer lehet valamit bonyolultan, akkor miért kellene egyszerűen? :P

A pdftotext-et pedig megnézem. :)
süti beállítások módosítása