PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umlaute in einem Teil des Textes ersetzen (Konsole)



MannOhMann
13.03.06, 17:41
Hallo,

ich habe ein tab getrenntes Textfile vor mir, in dem ich in bestimmten Spalten die Umlaute umschreiben will.

Nicht verstanden ;) ok ein kleines Muster:

Spalte1 Spalte2 Spalte3 Spalte4
bla........ Buero.... blabla... Bluetooth
bla........ bla.......... fuer....... bla

Ich will die Spalten 2-3 nach Umlauten durchsuchen und ersetzen, Spalte 4 (wegen den englischen Wörtern) aber nicht.


Mein Ansatz bisher:

sed -e "s#oe#ö#g" -e "s#ae#ä#g" -e "s#ue#ü#g" -e "s#Oe#Ö#g" -e "s#Ae#Ä#g" -e "s#Ue#Ü#g" file.txt

Da nimmt er aber den ganzen Text was ich ja vermeiden will.

Wenn ich mit cat (bzw find) | cut arbeite kann ich zwar die Felder eingrenzen, verliere jedoch die Ausgabe der anderen Felder davor und dahinter.

Tipps, Vorschläge ?

klaus_harrer
13.03.06, 19:35
Hallo

Ungeprüft:


sed -n -e '2,3p' -e "s#oe#ö#g" -e "s#ae#ä#g" -e "s#ue#ü#g" -e "s#Oe#Ö#g" -e "s#Ae#Ä#g" -e "s#Ue#Ü#g" file.txt


MfG
klaus_harrer

MannOhMann
13.03.06, 20:35
2,3p würde nur bewirken, daß die Kommandos auf die Zeile 2+3 ausgeführt werden.

klaus_harrer
13.03.06, 21:28
Hallo



sed -e '2,3y/oe/ö/' -e ...


MfG
klaus_harrer

MannOhMann
13.03.06, 21:43
hi,

y funktioniert nicht, da ich nicht 1 Zeichen für 1 Zeichen sondern 2 für 1 ersetze - muß also bei s bleiben.
Das davorgestellte 2,3 bewirkt garnichts, ein diff auf input output file zeigt 0 Änderungen.

Btw es muß nicht sed sein. Möglich dass es mit awk oder anderen Tools ganz einfach geht...

rkauskh
14.03.06, 19:36
Hi

Definitiv Awk, da Sed mW nur ganze Zeilen adressieren kann. Awk kann mit Feldtrennern (Tab) arbeiten. Schau mal unter

http://www.linuxfibel.de/awk.htm