plasma schrieb:
also vielen dank nochmal, ihr habt mir echt weitergeholfen und ich hab nun das ergebnis das ich wollte.
allerdings hat sich für mich dann ein weiterer haken offenbart, den ich so nich bedacht hatte.
meine schleife (ich weiß die is nich unbedingt notwendig) ersetzt ja nur in der vergegeben reihenfolge.
angenommen meine variable enthält den namen bzw das wort "blinder" und meine suchreihenfolge ist o, i, e und dann a, würde hier "bl1nder" rauskommen.
ich möchte ja aber den WIRKLICH ersten gefundenen, von mir definierten, buchstaben vom ende des wortes beginnend ersetzen, was in diesem falle das e wäre.
könnt ihr mir dafür bitte auch noch nen denkanstoß geben, wie sich das am besten realisieren lässt? ein freund empfahl mir awk, aber ich dachte das ist nur zur spaltenbearbeitung?
also dafür muss ich auch erstmal etwas überlegen...
AWK kann viel, sehr viel! Es ist praktisch eine eigene komplette Scriptsprache. Damit kann man fast alles machen, leider behersche ich die nicht...
...von daher denke ich schon das man das Problem mit awk lösen kann.
Im Zweifelsfall kann Wolfgang ja wieder ein Monster-RegEx mit Voodoo fabrizieren... :-)
EDIT:
So, jetzt habe ich mal ein Script geschrieben => dirty hack
Es muss hier deutlich gesagt werden, das ich hier nicht den "Königsweg" zeige. Das ist nur ein Versuch, mit meinen bescheidenen Kenntnissen ans Ziel zu kommen!
Aber es funktioniert! :-)
Hinweis: In den zu filternden Worten oder Sätzen darf das hoch-drei-Zeichen (³) nicht enthalten sein, da ich es als internes "Erkennungszeichen" verwende. Du kannst es bei bedarf aber gegen ein beliegiges anderes einzelnes Zeichen austauschen, welches niemals in eines Deiner zu filternden Worte auftauchen wird.
Der Aufruf erfolgt für einen Satz so:
# sh das_erste_von_hinten.sh Alles klar auf der Andreadoria
Alles klar auf der Andreadori4
Der Aufruf erfolgt für ein einzelnes Wort so:
# sh das_erste_von_hinten.sh Andreadoria
Andreadori4
bzw. so:
# ./das_erste_von_hinten.sh Andreadoria
Andreadori4
# vi das_erste_von_hinten.sh
Code:
#!/bin/sh
### hier wird das auszutauschende Zeichen identifiziert
# (damit die entsprechende Austauschroutine ausgewählt werden kann)
#
ZEICHEN="`echo "$@" | rev | sed -e 's/./&³/g' | tr -s '³' '\n' | sed -e 's/[A,E,I,O]/&³/i' | fgrep '³' | head -n1 | tr -d '³'`"
### hier geht es zur eigentlichen Arbeit,
### hier liegen die einzelnen möglichen routinen
#
case $ZEICHEN in
[Aa])
### hier wird das "A" ausgetauscht:
echo "$@" | rev | sed -e 's/A/4/i' | rev
;;
[Ee])
### hier wird das "E" ausgetauscht:
echo "$@" | rev | sed -e 's/E/3/i' | rev
;;
[Ii])
### hier wird das "I" ausgetauscht:
echo "$@" | rev | sed -e 's/I/1/i' | rev
;;
[Oo])
### hier wird das "O" ausgetauscht:
echo "$@" | rev | sed -e 's/O/0/i' | rev
;;
*)
### hier wird nichts ausgetauscht:
echo "$@"
;;
esac