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
