Írnom kell egy parancsfájlt, ami a sed segítségével a paraméterként kapott szöveget átalakítja úgy, hogy ahol ékezetes betű van, ott repu:lo" e'kezet lesz, és fordítva...
#!/bin/sh
echo $1 | sed "s/á/a'/g"
echo $1 | sed "s/e'/é/g"
és ez leírhatnám még jónéhányszor. Gondolkodtam cikluson, de az sem sikerült.
Hogyan lehet ezt a legegyszerűbben megoldani a sed és esetleg a vezérlési szerkezetek segítségével?
- 2963 megtekintés
Hozzászólások
Szerintem...:
echo $i | sed "s/á/a'/g
s/é/e'/g
s/í/i'/g
...
s/ű/u\"/g"
- A hozzászóláshoz be kell jelentkezni
Talán ez:
sed -e "s/á/a'/g" -e "s/á/a'/g" -e "s/ö/o:/g" -e .......
magyarul "-e"-vel adok meg több parancsot (cserét).
- A hozzászóláshoz be kell jelentkezni
Köszi, igazából az én megoldásom is valami ilyesmi, de nem lehet ezt szebben megcsinálni, csak úgy, hogy felsorolom az összes lehetőséget?
- A hozzászóláshoz be kell jelentkezni
sed-el nem tudsz jobbat. python/perl: ott mondjuk csoportosíthatod az ékezetes betűket a kieg. karakter szerint ( '": ), és ciklusba teheted a cserét, de gyakorlatilag ugyanitt vagy.
Ötlet: bash-ban vannak tömbök, abban megcsinálod a csoportosítást; aztán ciklus sétál a tömbön, és megfelelően paraméterezi a sed-et, ami végrehajt.
Gond: ez így még nem pipe-barát
- A hozzászóláshoz be kell jelentkezni
vagy igy:
sed "s/á/a'/g;s/é/e'/g"
- A hozzászóláshoz be kell jelentkezni
sed-en kivul tr hasznalataval pl:
echo 'árvíztűrő tükörfúrógép'|sed -r "s,([áíéúó]),\1',g;s,([őű]),\1\",g;s,([öü]),\1:,g"|tr '[áíéúóőöűü]' '[aieuooouu]'
- A hozzászóláshoz be kell jelentkezni
Lévén ebben is használál sed-et, ez asszem csak jobban elbonyolítja a helyzetet. De lelked rajta.
- A hozzászóláshoz be kell jelentkezni
Ez max. arra válasz, hogy ne kelljen egyenként felsorolni a cserélendő karaktereket. Amúgy persze, bonyolult.
- A hozzászóláshoz be kell jelentkezni
Működése: a beépített transliterate-el (y parancs) fogja megcserélni az ékezetes karaktereket, ékezet nélküli megfelelőikre.
echo "íéáúó" | /bin/sed "s/\([íéáúó]\)/&'/g; y/íéáűőúöüó/ieauououo/"
Bocs, hogy írtam ebbe a régi topicba.
- A hozzászóláshoz be kell jelentkezni