Brisanje praznih redaka
description
Transcript of Brisanje praznih redaka
![Page 1: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/1.jpg)
1
Brisanje praznih redakaBrisanje praznih redaka
$ sed -e '/^$/d' file > newfile
Unutar navodnika ('), znakovi (/) omeđuju RI koji ć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
![Page 2: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/2.jpg)
2
WikipediaWikipedia
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…)
![Page 3: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/3.jpg)
3
DefinicijaDefinicija
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
![Page 4: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/4.jpg)
4
AlternativeAlternative
izbor, jedna od ponuđenih mogućnosti
“|” prečka, okomita crtaodvaja moguće izbore“M|F”, “\+|-”, “a|e|i|o|u”
![Page 5: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/5.jpg)
5
GrupiranjeGrupiranje
() zagrade određuju doseg i prvenstvo operatora Primjeri:
(b|k)rdo je isto kao (brdo|krdo)
![Page 6: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/6.jpg)
6
KvantifikacijaKvantifikacija
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.
![Page 7: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/7.jpg)
7
BasicBasic
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
![Page 8: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/8.jpg)
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
![Page 9: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/9.jpg)
9
PosixPosix
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
![Page 10: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/10.jpg)
10
PosixPosix
[: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
![Page 11: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/11.jpg)
11
ZadatakZadatak
$ sed -e '/^$/d' file > newfile
Preradite RI tako da se brišu prazni retci samo ako ih je više od jedan
![Page 12: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/12.jpg)
12
Brisanje praznih redaka IIBrisanje praznih redaka II
Što ako redak sadrži praznine? “ “, \t
# sed -e '/^[ ]*$/d' InputFile >OutputFile
U zagrade ubacite razmak i tab.
![Page 13: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/13.jpg)
13
Brisanje praznih redaka IIIBrisanje praznih redaka III
Ako se ne služite sed-om:
$ cat file1 | grep -v '^$' >file2
$ grep -v "^ *$" file-y > file-x
![Page 14: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/14.jpg)
14
Brojanje praznih redakaBrojanje praznih redaka
cat filename | awk ' /^['\ '|'\\t']*$/ { ++x } END { print “Br. praznih redaka = " x } '
![Page 15: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/15.jpg)
15
Decimalni brojDecimalni broj
Protumačite ovaj izraz
(\+|-)?([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)?
![Page 16: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/16.jpg)
16
LinkoviLinkovi
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
html http://codeproject.com/dotnet/RegexTutorial.asp --
![Page 17: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/17.jpg)
17
MetaznakoviMetaznakovi
[ otv.uglata \ rez ^ kapica $ dolar . točka | prečka
? upitnik * zvjezdica + plus ( otvorena obla
zagrada ) zatvorena
obla zagrada
![Page 18: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/18.jpg)
18
Ponavljanje klasePonavljanje klase
Ponavlja se cijela klasa, ne samo znak koji se podudara [0-9]+ podudara se 222 ali I
![Page 19: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/19.jpg)
19
LookLook--aheadahead
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.
![Page 20: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/20.jpg)
20
LookLook--behindbehind
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
![Page 21: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/21.jpg)
21
Metaznakovi unutar klaseMetaznakovi 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^]
![Page 22: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/22.jpg)
22
VježbaVjež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
![Page 23: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/23.jpg)
23
IP adresaIP 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: \.
![Page 24: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/24.jpg)
24
IP adresaIP 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]))
![Page 25: Brisanje praznih redaka](https://reader033.fdocuments.net/reader033/viewer/2022051215/568147e8550346895db5210c/html5/thumbnails/25.jpg)
25
Može li to jednostavnije?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