On Tuesday 28 February 2006 00:02, [EMAIL PROTECTED] wrote:
> Am un script de rename care face mai umane niste nume de fisiere. Scriptul
> foloseste sed.
> Cum fac sa inlocuiesc caracterul "." + "ceva de dupa" cu "ceva de dupa"

$ echo "a.xxx.b.xxx.c.xxxxxx" | sed -re 's/\.xxx(\.|$)/xxx\1/g'
axxx.bxxx.c.xxxxxx

> dau cu _ ?

$ echo "a.xxx.b.xxx.c.xxxxxx" | sed -re 's/\.xxx(\.|$)/_xxx\1/g;'
a_xxx.b_xxx.c.xxxxxx

> Ca din cite stiu eu
> sed -e 's/._/_/g' nu merge pentru ca ._ e regexp.

Trebuie "escapat" punctul.

> Alta intrebare ar fi: pot sa-i zic la sed sa faca inlocuirea asta pentru
> toate punctele din numele de fisier cu exceptia ultimului ? (ca sa
> pastrez extensia fiserului)

Cam dificil cu sed. E mai simplu sa folosesti perl pentru asta, datorita 
suportului pentru regexp-uri non-greedy:

$ echo "a.b.c.d.extensie" | perl -pe 's/\.(.*?\.)/_$1/g; s/\.(.*?\.)/_$1/g;'
a_b_c_d.extensie


Mihai

_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui