Sed-del probaltam vegrehajtani, filenevbol szeretnem kigyomlalni, a nem oda valo karaktereket. A vegrehajtando cserek egy file-ban vannak (replace.sed)
s/Á/A/g
s/É/E/g
s/Í/I/g
s/Ó/O/g
s/Ö/O/g
s/Õ/O/g
s/Ő/O/g
s/Ú/U/g
s/Ü/U/g
s/Û/U/g
s/Ű/U/g
s/á/a/g
s/é/e/g
s/í/i/g
s/ó/o/g
s/ö/o/g
s/õ/o/g
s/ő/o/g
s/ú/u/g
s/ü/u/g
s/û/u/g
s/ű/u/g
s/\\/_/g
s/[^][().qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJKLYXCVBNM0123456789-]/_/g
Bash változo cserevel mukodik is szaszi megoldasa alapjan, de engem az eredeti problema is erdekel, hogy sed-del hogyan lehet.
[:alnum:] az a problema, hogy jonehany nem oda valo karaktert is meghagy, ezzel kezdtem, ezutan tertem at a felsorolasra, bar ez a kettosbetuket meghadgya.
Pl.
Errol: teszt/$ß&ŁßŁ@þ``aa.txt
Erre: teszt/_ß_ŁßŁ_þ__aa.txt
Ahitott: teszt/__________aa.txt
Jelenleg az a problema, hogyha a localas hu_hu.utf8 akkor kigyomlalja a kettos betuket.
Pl.
Errol: teszt/cs sc zs sz rs sr
Erre: te_t/_sc_rs_sr
en_us locale eseten meg jo.
Errol: teszt/cs sc zs sz rs sr
Erre: teszt/cs_sc_zs_sz_rs_sr
A script ide vonatkozo resze:
function new_name {
local newfilename=$(echo "$1" | sed -f replace.sed)
# | tr -s "_"
case $charcase in
l) echo $newfilename | tr [:upper:] [:lower:] ;;
u) echo $newfilename | tr [:lower:] [:upper:] ;;
*) echo $newfilename ;;
esac
}