Difference between revisions of "Regular Expression Perl/Oneliners"
From Teknologisk videncenter
m |
m |
||
Line 2: | Line 2: | ||
*[[Media:Regexp Quick Reference.pdf|Regular Expression Quick Reference Guide]] | *[[Media:Regexp Quick Reference.pdf|Regular Expression Quick Reference Guide]] | ||
*[http://www.regextester.com Regular Expression test web-site] | *[http://www.regextester.com Regular Expression test web-site] | ||
+ | == One-liners == | ||
+ | ===confusing== | ||
+ | Onelineren nedenunder finder i alle ''*.txt'' steder hvor der står Fahrenheit temperaturer - fx. 56F - og udskifter dem med Celcius temperaturer - fx. 12C. | ||
+ | <source lang=cli> | ||
+ | perl -pi -e 's{([-+]?\d+(\.d*)?)F\b}{sprintf "%.0fC",($1-32)*5/9}eg' *.txt | ||
+ | </source> | ||
+ | ==== Forklaring ==== | ||
+ | Progammet startes med '''perl -pi -e 'ONELINER'''' hvor | ||
+ | *perloption p = Loop oneliner og indlæs filer linie for linie '''*.txt''' | ||
+ | ** Svarer til '''"while (<>) { ... }"''' omkring din Oneliner. | ||
+ | *perloption = Editer filer direkte | ||
+ | *perloption = programlinie eller onliner. | ||
+ | |||
+ | Eksemplet ovenfor anvender search and replace funktionen '''s/PATTERN/REPLACE/''' som også kan skrives '''s{PATTERN}{REPLACE}'''. Se herunder. | ||
+ | <source lang=cli> | ||
+ | perl -pi -e '<input>s{</input>([-+]?\d+(\.d*)?)F\b<input>}{</input>sprintf "%.0fC",($1-32)*5/9<input>}</input><notice>eg</notice>' *.txt | ||
+ | </source> | ||
+ | |||
+ | Search and replace funktionen anvender options '''e''' og '''g'''. Se med blåt ovenfor | ||
+ | Seachfunktionen anvender options '''e''' og '''g'''. | ||
+ | *Option e = Betragt REPLACE delen af searchfunktionen som et Perl expression - altså som program og ikke tekst. (sprintf funktionen) | ||
+ | *Option g = global. Erstat alle der matcher. Ikke kun en gang. |
Revision as of 08:44, 3 October 2009
Contents
Links
One-liners
=confusing
Onelineren nedenunder finder i alle *.txt steder hvor der står Fahrenheit temperaturer - fx. 56F - og udskifter dem med Celcius temperaturer - fx. 12C.
perl -pi -e 's{([-+]?\d+(\.d*)?)F\b}{sprintf "%.0fC",($1-32)*5/9}eg' *.txt
Forklaring
Progammet startes med perl -pi -e 'ONELINER' hvor
- perloption p = Loop oneliner og indlæs filer linie for linie *.txt
- Svarer til "while (<>) { ... }" omkring din Oneliner.
- perloption = Editer filer direkte
- perloption = programlinie eller onliner.
Eksemplet ovenfor anvender search and replace funktionen s/PATTERN/REPLACE/ som også kan skrives s{PATTERN}{REPLACE}. Se herunder.
perl -pi -e '<input>s{</input>([-+]?\d+(\.d*)?)F\b<input>}{</input>sprintf "%.0fC",($1-32)*5/9<input>}</input><notice>eg</notice>' *.txt
Search and replace funktionen anvender options e og g. Se med blåt ovenfor
Seachfunktionen anvender options e og g.
- Option e = Betragt REPLACE delen af searchfunktionen som et Perl expression - altså som program og ikke tekst. (sprintf funktionen)
- Option g = global. Erstat alle der matcher. Ikke kun en gang.