[ leka @ 03.04.2002. 10:40 ] @
SED-eri pomagajte,
treba mi sed komanda koja od
Code:
'var = fun("trt", "mrt");'
"pravi"
Code:
'var = fun("%C9trt%O", "%C9mrt%O");'
[ leka @ 03.04.2002. 10:59 ] @
Zahvaljujuci Dragishi Duricu, vlasniku LINUKS.org-a i RSTEL-a, problem je reshen! :)

Evo kako je tekao razgovor:
Code:

LekaMan(10:47 AM) : 
[dejan@gnu dejan]$ echo 'var = fun("trt", "mrt");' | sed -e 's/"\(.*\)"/"%C9\1%O"/'
var = fun("%C9trt", "mrt%O");

LekaMan(10:47 AM) : 
ovo ne radi posao meni
LekaMan(10:48 AM) : 
fora je... juce sam se zajebavo dva sata... on uvek navodnike zameni sa onim sto mu kazem da menja...
Jomu(10:49 AM) : 
var = fun("%C9trt", "mrt%O");

da ovo, longest match fol
?ek

Jomu(10:50 AM) : 
echo 'var = fun("trt", "mrt");' | sed -e 's/"\([^"]*\)"/"%C9\1%O"/g'
var = fun("%C9trt%O", "%C9mrt%O");

evo
sad radi :)
[ leka @ 03.04.2002. 11:19 ] @
E nakon svega ovoga Dragisha ukazuje na jedan dodatni problem:
Code:

frodo:dragisha/pts/14: ~# echo 'var leka = "m3 \"zealot\"";' | sed -e 's/"\([^"]*\)"/"%C9\1%O"/g'
var leka = "%C9m3 \%O"zealot\"%C9%O";

vidi?? :)


(Kanal #OS na BalcanNET-u)
[ Gojko Vujovic @ 03.04.2002. 17:14 ] @
Nešto ovako možda:

Code:

gojko@es:~$ echo 'var = fun("trt", "mrt");' | sed -e 's/[^]"([^"]*)(\"[^"]*\")*([^"]*)"/"%C9123%O"/g'
var = fun"%C9trt%O","%C9mrt%O");
gojko@es:~$ echo 'var leka = "m3 "zealot" test";' | sed -e 's/[^]"([^"]*)(\"[^"]*\")*([^"]*)"/"%C9123%O"/g'
var leka ="%C9m3 "zealot" test%O";


Podržava maximalno jedan par escapeovanih quoteova unutar pravih navodnika.
Može se preraditi i da radi sa više njih, ako ti baš treba, reci..
[ leka @ 03.04.2002. 18:38 ] @
treba mi jedinstveno resenje koje radi i u jednom i u drugom slucaju!
[ Gojko Vujovic @ 05.04.2002. 11:58 ] @
Mogao si prvo da pogledaš moju poruku, uvideo bi da sam isti regexp /[^]"([^"]*)(\"[^"]*\")*([^"]*)"/"%C9123%O"/ koristio u oba slučaja i koliko sam ja shvatio tvoje pitanje, ovako se dobijaju traženi rezultati:

var = fun("trt", "mrt"); postaje var = fun"%C9trt%O","%C9mrt%O");
var leka = "m3 "zealot" test"; postaje var leka ="%C9m3 "zealot" test%O";.
[ leka @ 06.04.2002. 03:55 ] @
Yeah, Gojko faco u pravu si - hvala na pomoci! :)
Videces na IRC-u za sta mi treba ovo! :)
[ Gojko Vujovic @ 06.04.2002. 15:28 ] @
Sad sam tek primetio da ovaj poslednji guta prvu zagradu "(" posle 'fun'.
Evo ispravke:

Code:

gojko@es:~$ echo 'var = fun("trt", "mrt"); var leka = "m3 \"zealot\" test"; ' | sed -e 's/\([^\]"\)\([^"]*\)\(\\"[^"]*\\"\)*\([^"]*\)"/\1%C9\2\3\4%O"/g' 
var = fun("%C9trt%O", "%C9mrt%O"); var leka = "%C9m3 \"zealot\" test%O";