1 / 25

Brisanje praznih redaka

Brisanje praznih redaka. $ sed -e '/^$/d' file > new file Unutar navodnika ('), znakovi (/) omeđuju RI koji će interpret irati sed ^ početak $, kraj retka, ništa između d delete , briši retke koji se podudaraju

colton
Download Presentation

Brisanje praznih redaka

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Brisanje praznih redaka $ sed -e '/^$/d' file > newfile • Unutar navodnika ('), znakovi (/) omeđujuRIkoji će interpretirati sed • ^ početak $, kraj retka, ništa između • d delete, briši retke koji se podudaraju • Standardno ponašanje sed-a je ispis svakog retka, sve osim praznih redaka bitće prepisano

  2. Wikipedia • Regularni izraz je niz znakova (string) koji opisuje, ili se podudara (matches) sa skupom znakova, u skladu sa sintaksnim pravilima • RI koriste uređivači teksta, alati za pretraživanje, i programski jezici (Perl, Python, Tcl, PHP) • Alati Unixa prvi su popularizirali koncept RI (grep, sed, awk…)

  3. Definicija • RI, često zvan i “uzorak”, jest izraz koji opisuje skup znakova (strings). • Skraćen opis skupa, bez nabrajanja svih članova • Isti skup mogu opisivati različiti uzorci. • više rješenja za isti problem

  4. Alternative • izbor, jedna od ponuđenih mogućnosti • “|” prečka, okomita crta • odvaja moguće izbore • “M|F”, “\+|-”, “a|e|i|o|u”

  5. Grupiranje • () • zagrade određuju doseg i prvenstvo operatora • Primjeri: • (b|k)rdo je isto kao (brdo|krdo)

  6. Kvantifikacija • Nakon znaka ili grupe znakova određuje broj ponavljanja • ? 0 ili 1 pojava prethodnog izraza • colou?r color i colour • * 0 ili više ponavljanja • “br*” b, br, brr itd. • + barem jedan, odn. jedan ili više • “br+” označava br, brr, brrr itd.

  7. Basic • Stari Unixovi RI, zastarjeli, zamijenjeni Posix proširenjima • većina znakova tretiraju se doslovno, izuzetak su metaznakovi • . bilo koji pojedinačni znak • [] jedan znak od onih koji se nalaze u zagradama • [^] jedan znak koji nije sadržan u zagradama • ^ početak retka • $ kraj reda • \(\) označeni podizraz, blok

  8. \n n je znamenka od 1 do 9, podudara se s n-tim podizrazom (nepravilno) • * ponavljanje • ako se izraz odnosi na pojedinačni znak, 0 ili više ponavljanja tog znaka • na pr. [abc]* “”,a,b,c,ab,ac,bc,abc • {x,y} ponavljanje prethodnog bloka najmanje x, najviše y puta

  9. Posix • definira klase znakova • [:upper:] [A-Z] velika slova • [:lower:] [a-z] mala slova • [:alpha:] [a-zA-Z] slova • [:allnum:] [a-zA-Z0-9] brojke I slova • [:digit:] [0-9] brojke • [:xdigit:] [0-9A-Fa-f] heksadecimalni brojevi

  10. Posix • [:punct:] [.,:;!?] punctuation • [:blank:] [ \t] razmak I tab • [:space:] [\t\n\r\f\v] prazni znakovi • [:cntrl:] kontrolni znakovi • [:graph:] printed characters • [:print:] [^\t\n\r\f\v] printed characters & space

  11. Zadatak • $ sed -e '/^$/d' file > newfile • Preradite RI tako da se brišu prazni retci samo ako ih je više od jedan

  12. Brisanje praznih redaka II • Što ako redak sadrži praznine? • “ “, \t # sed -e '/^[]*$/d' InputFile >OutputFile • U zagrade ubacite razmak i tab.

  13. Brisanje praznih redaka III • Ako se ne služite sed-om: $ cat file1 | grep -v '^$' >file2 $ grep -v "^ *$" file-y > file-x

  14. Brojanje praznih redaka cat filename |awk ' /^['\ '|'\\t']*$/ { ++x } END { print “Br. praznih redaka = " x } '

  15. Decimalni broj • Protumačite ovaj izraz (\+|-)?([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)?

  16. Linkovi http://www.regular-expressions.info/quickstart.html http://en.wikipedia.org/wiki/Regular_expression http://sitescooper.org/tao_regexps.html http://www.amk.ca/python/howto/regex/ http://ruddo.com/projects/wp-search-replace/wp-search-replace-regexptut/ http://gnosis.cx/publish/programming/regular_expressions htmlhttp://codeproject.com/dotnet/RegexTutorial.asp --

  17. [ otv.uglata \ rez ^ kapica $ dolar . točka | prečka ? upitnik * zvjezdica + plus ( otvorena obla zagrada ) zatvorena obla zagrada Metaznakovi

  18. Ponavljanje klase • Ponavlja se cijela klasa, ne samo znak koji se podudara • [0-9]+ podudara se 222 ali I

  19. Look-ahead • Predviđanje? Ovo znaju Perl i Python? • "(?=uzorak)" zero-width positive look-ahead assertion "/\w+(?=\t)/" riječ ako je iza nje tab, koji neće biti u $& • "(?!uzorak)" zero-width negative look-ahead assertion "/slon(?!ica)/" “slon" ako za njim ne slijedi “ica“ Note however that look-ahead and look-behind are NOT the same thing. You cannot use this for look-behind.

  20. Look-behind • Osvrtanje? • "(?<=pattern)" zero-width positive look-behind assertion. "/(?<=\t)\w+/" riječ iza taba, tab nije uključen u $& Works only for fixed-width look-behind • "(?<!pattern)" zero-width negative look-behind assertion "/(?<!na)slon/" “slon" ako nije iza “na“ Works only for fixed-width look-behind

  21. Metaznakovi unutar klase • Neki ostaju metaznakovi: ^ \ - ] • Ako ih doslovno tražimo, treba ih citirati: • [\\x] \ ili x • Neki mijenjaju značenje • [^x] negacija, znak koji nije x • Neke ne treba citirati: • [*+] tražimo zvjezdicu ili plus, isto što i [\*\+] • [\\]] tražimo \ ili ], može i ovako: []\\] • [\^x] ^ ili x, isto što i: [x^]

  22. Vježba • RI koji “hvata” IP adrese • 4 x cijeli broj između 0 i 255, s točkama između brojeva • odn. 4 byta odvojena točkama • na pr. 192.168.0.1

  23. IP adresa • Rješenje: korak po korak, definirajmo moguće kombinacije • 0-99:(\d{1,2}) • 100-199: (1\d{2}) • 200-249:(2[0-4]\d) • 250-255: (25[0-5]) • I točka: \.

  24. IP adresa • jedan od četiri uzorka mora biti istinit: ((\d{1,2}) | (1\d{2}) | (2[0-4]\d) | (25[0-5])) • i još točka: ((\d{1,2}) | (1\d{2}) | (2[0-4]\d) | (25[0-5]))\. • pa sve to još u zagrade: (((\d{1,2}) | (1\d{2}) | (2[0-4]\d) | (25[0-5]))\.) • ponovi tri puta: (((\d{1,2}) | (1\d{2}) | (2[0-4]\d) | (25[0-5]))\.){3} • I dodaj još četvrti byte… (((\d{1,2}) | (1\d{2}) | (2[0-4]\d) | (25[0-5]))\.){3} ((\d{1,2}) | (1\d{2}) | (2[0-4]\d) | (25[0-5]))

  25. Može li to jednostavnije? • [0-9]{1,3}\. [0-9]{1,3}\. [0-9]{1,3}\. [0-9]{1,3} • Je li ovo ispravna IP adresa? 457.999.2.555

More Related