PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umlaute in Datei umwandeln



meinereinerseiner
28-05-2001, 13:54
Hi,

wie ersetze ich in einer Datei die umlaute
ä,Ä,ö,Ö,Ü,ü,ß gegen die entsprechenden Zeichen?

der tom

Krelian
28-05-2001, 14:20
Ich bin mir nicht sicher, wie du das meinst, aber wenn es darum geht Dateien, die in Dos bzw. Windoof geschrieben wurden in UNIX-Format zu konvertieren versuch doch mal "recode" oder "dos2unix" bzw. "unix2dos".

meinereinerseiner
28-05-2001, 14:35
nein, dos2unix ändert die zeilenumbrüche und so, ich möchte ö in oe und Ö in Oe wandeln. usw.

der tom

rbla
28-05-2001, 16:22
z.b. mit sed
sed -e 's/ö/oe/g' datei

kann sein, dass du anstelle der umlaute den oktalwert nehmen musst

kabalak
28-05-2001, 16:23
Per ole-mole sed:

umlaut2code.sed enthält:
s~ü~ü~g
s~Ü~Ü~g ...etc.

sed -e -f umlaut2code.sed < Datei > Datei.ohneUmlaute

[ 28. Mai 2001: Beitrag editiert von: kabalak ]

meinereinerseiner
28-05-2001, 17:04
Hi,

habs mal getestet:

Inhalt filter.txt:
s~ö~oe~g
s~ä~ae~g
s~ü~ue~g
s~ß~ss~g
s~Ö~Oe~g
s~Ä~Ae~g
s~Ü~Ue~g
s~{~(~g
s~[~(~g
s~]~)~g
s~}~)~g


Ergebnis:
devil:~/entwicklung # sed -e -f filter.txt < org.txt > neu.txt
sed: -e expression #1, char 1: Unknown command: ``-''

der tom

TommeS73
28-05-2001, 20:40
Hi,

ich habe mal schnell ein paar Perl-Zeilen zusammengestrickt. Damit sollte es funzen.
(Datei mit Umlaute als Argument übergeben)



#!/usr/bin/perl
open (FILE,"$ARGV[0]") &#0124;&#0124; die "Datei kann nicht geöffnet werden!";
while ($inhalt=FILE) #"File" muss in öffnenden und schließenden spitzen Klammern stehen
{$inhalt =~ s/ö/oe/g;
$inhalt =~ s/Ö/Oe/g;
$inhalt =~ s/ä/ae/g;
$inhalt =~ s/Ä/Ae/g;
$inhalt =~ s/ü/ue/g;
$inhalt =~ s/Ü/Ue/g;
$inhalt =~ s/ß/ss/g;
$inhalt =~ s/{/(/g;
$inhalt =~ s/}/)/g;
$inhalt =~ s/\[/(/g;
$inhalt =~ s/\]/)/g;
print "$inhalt";
}
close (FILE);


mfg
Thomas

[ 28. Mai 2001: Beitrag editiert von: TommeS73 ]

[ 28. Mai 2001: Beitrag editiert von: TommeS73 ]

[ 28. Mai 2001: Beitrag editiert von: TommeS73 ]

Hans-Georg Normann
29-05-2001, 21:35
Versuchst mal mit folgender filter.txt


1,$s/ö/oe/g
1,$s/ä/ae/g
1,$s/ü/ue/g


und dem Aufruf sed -e -f filter.txt < org.txt > neu.txt

Hans

kabalak
29-05-2001, 22:37
<BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Original erstellt von meinereinerseiner:

Ergebnis:
devil:~/entwicklung # sed -e -f filter.txt < org.txt > neu.txt
sed: -e expression #1, char 1: Unknown command: ``-''

der tom[/QB][/quote]

Tschuldigung: sed -f filter.txt < org.txt > neu.txt; das -e ist überflüssig.