[ B o j a n @ 09.05.2003. 18:48 ] @
dakle, kako na najelegantniji nacin konvertovati sva uppercase slova u lowercase ? operise se sa imenima file-ova, sto verovatno znaci neki od standardnih alata ( sed, awk ... ) |
[ B o j a n @ 09.05.2003. 18:48 ] @
[ alex @ 09.05.2003. 19:39 ] @
$ echo "VELIKA SLOVA SU MALA SLOVA" | tr 'A-Z' 'a-z'
![]() [ tOwk @ 09.05.2003. 19:43 ] @
echo PROBA | tr A-Z a-z
echo PROBA | awk '{ print tolower($0) }' echo PROBA | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' TXT='PROBA' && perl -e "print lc($TXT)" Najelegantniji je najverovatnije „tr“, pošto tome i služi. [ Gojko Vujovic @ 09.05.2003. 22:33 ] @
t0wk me pretekao pa dao skoro sva rešenja. I šta ja sad da napišem? :)
Smisliću neko.. valjda.. [ tOwk @ 10.05.2003. 05:03 ] @
Znaš kako bi trebalo da može: da napraviš sed skriptu koja će da traži bilo koji od A-Z, da nađenu vrednost obradi nekim programom za računanje kao \1+'a'-'A', i time da zameni. No, ne poznajem toliko sed, a ne bih sad da čitam uputstvo ;-)
[ B o j a n @ 10.05.2003. 15:49 ] @
fino fino l;)
da malo probudimo ovaj deo foruma, evo i nastavka ... kako selektivno izabrati da se neka slova konvertuju, a neka ne ... na primer; prvo slovo da bude uvek upper, a ostala lower. [ Gojko Vujovic @ 10.05.2003. 15:57 ] @
Prvo slovo u reči, ili u rečenici ili u redu (line) ?
[ tOwk @ 10.05.2003. 16:04 ] @
# Ovo mi prvo pada na pamet, mada nije baš najelegantnije
PRVO=`echo prOBA | sed 's/^\(.\).*/\1/'| tr a-z A-Z` OSTATAK=`echo prOBA | sed 's/^.\(.*\)/\1/'| tr A-Z a-z` # i onda još rezultat="$PRVO$OSTATAK" U awk-u, Perl-u i sličnima može i lepše, ali kome to još treba? ;-) [ B o j a n @ 10.05.2003. 16:06 ] @
pa recimo u reci, kad se stvori nacin da se to uradi, moze vrlo lako i u recenici ili u redu (line) ...
[ tOwk @ 10.05.2003. 16:54 ] @
Probaj \<, \b i slične za početak reči i drugih elemenata, ili već napravi svoj regex za to (npr. tražiš ili početak reda, ili razmak, tačku, zarez, pa slovo itd.), a za malo bolji uvod u regex, pogledaj http://etext.lib.virginia.edu/helpsheets/regex.html.
Kompletna skripta: Code: #!/bin/sh # prvo sve u mala TXT=`echo $* | tr A-Z a-z` for i in a b c d e f g h i j k l m n o p q r s t u v w x y z; do \ TXT=$(echo $TXT | sed s/\\b$i/`echo -n $i | tr a-z A-Z`/g) done echo $TXT No, valjda ovi drugi (awk, perl) mogu to i mnogo lepše [ Gojko Vujovic @ 10.05.2003. 21:20 ] @
JavaScript rešenje, za svaku unetu reč:
Code: <html <head> <script language="JavaScript1.2"><!-- function u() { var p = /(\w)(\w*)/; var a = document.form1.text1.value.split(/\s+/g); for (i = 0 ; i < a.length ; i ++ ) { var z = a[i].match(p); var f = z[1].toUpperCase(); var r = z[2].toLowerCase(); a[i] = f+r } document.form1.text1.value = a.join(' '); } //--> </script> </head> <body> <form name="form1"> <input type="text" name="text1"> <input type="button" onClick="u()" value="Uppercase"> </form> </body> </html> [ Gojko Vujovic @ 10.05.2003. 21:24 ] @
U perlu, veliko slovo u svakoj reči u liniji:
Code: $text = lc($text);; $text =~ s/\b(\w)/\U$1/g; [ -zombie- @ 11.05.2003. 02:50 ] @
php -r "echo ucwords(file_get_contents('php://stdin'))"
php -r "echo ucwords(join('', file('php://stdin')))" php -r "echo ucwords(fread(STDIN, 999000))" (naravno, bilo koji od ovih, a ne svi ;) Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|