Schon wieder script gesucht: Austausch von Zeichen

Hi,

da ich noch Linuxanfänger bin und keine Ahnung von Scripten habe muss ich schon wieder fragen… Ich brauche ein Script um Dateien die Zeichen wie Ä,Ü usw. enthalten, mit Ä und Ü austauschen.

Danke für Eure Hilfe im vorraus.

Hallo,

da ich noch Linuxanfänger bin und keine Ahnung von Scripten
habe muss ich schon wieder fragen… Ich brauche ein Script um
Dateien die Zeichen wie Ä,Ü usw. enthalten, mit Ä und
Ü austauschen.

Hm?
Ä und Ü durch Ä und Ü austauschen?
Wahrscheinlich suchst Du nach tr.
Beispiel:

10:47[wilm@simul:wilm]$ echo "hallo" | tr [ao] [OA]
hOllA
10:46[wilm@simul:wilm]$ echo "hallo" | tr [a-z] [A-Z]
HALLO

Gruß
Andreas

Hoppla Fehler
Das wurde jetzt interpretiert statt auszuschreiben: ich meine die HTML Tags für ö, ü, ä usw. Also „&o“ + „uml“ und „&a“ + „uml“. Wie kann ich das mit dem tr Befehl für alle html dateien in einem Verzeichnis machen? Und wie schreib ich es in die gleiche Datei? Das die Veränderung nicht in einer zweiten sondern in der gleichen datei steht?

DANKE!

Das wurde jetzt interpretiert statt auszuschreiben: ich meine
die HTML Tags für ö, ü, ä usw. Also „&o“ + „uml“ und „&a“ +
„uml“. Wie kann ich das mit dem tr Befehl für alle html
dateien in einem Verzeichnis machen? Und wie schreib ich es in
die gleiche Datei? Das die Veränderung nicht in einer zweiten
sondern in der gleichen datei steht?

#!/usr/bin/perl -Tw

use File::Basename;
$prog_name = basename($0);

&usage if (scalar(@ARGV)  ‚ä‘, ‚ö‘ => ‚ö‘, ‚ü‘ => ‚ü‘, 
         ‚Ä‘ => ‚Ä‘, ‚Ö‘ => ‚Ö‘, ‚Ü‘ => ‚Ü‘, 
         ‚ß‘ => ‚ß‘);

# Let’s walk through all given arguments.
for ($i = 0; $i  $new") or do {printf(„Unable to open temporary file ‚%s‘.\n“, $new); close(FILE); next;};
        printf("%s\n", $file);
        while() {
            foreach $key (keys(%htmlspecials)) {
                s/$key/$htmlspecials{$key}/g;
            }
            printf NEW ("%s", $_);
        }
        close(NEW);
        close(FILE);
        # If you don’t like backups comment out the next line
        rename($file, „$file.orig“);
        rename($new, $file);
    }
    closedir(DIR);
}

sub usage() {
    printf(„Usage: %s DIR1 [ DIR2 [ DIR3 … ] ]\n“, $prog_name);
}

exit 0;

hi!

da doch einige zwischen linux und unix ähnlich ist: gibt’s unter linux keinen awk oder einen sed oder einen vi?

grüße,
tomh

Fehler:
Vielen Dank!
Ist das unter einer *.sh Datei abzuspeichern? (Sorry, hab eben keine Ahnung…)

Als ich versuchte es auszuführen(Unix) bekam ich folgenden Fehler:

line 2: syntax error near unexpected token basename($' line 2: g_name = basename($0);’

Gruß Bonkers

Sicher gibt es unter Linux und Unix z.B. den vi. Worauf willst Du hinaus? Ein paar hundert files per Editor abändern???
Oder läßt es sich mit dem vi automatisieren?

Gruß Bonkers

Hi,

Du solltest das Skript von Pit mit der Endung .pl abspeichern, da es ein Perl-Skript ist. Dann mit chmod 775 ausführbar machen.
Ausserdem kannst du das Skript nicht einfach aus dieser HTML Seite kopieren, da die Umwandluneng der Umlaute in dem Hash htmlspecials im Browser natürlich auch als Umlaute und nicht als &‚Buchstabe‘+uml; dagestellt wurden :smile:. Also einfach immer nach dem „=>“ den html-Ausdruck schreiben.
Den Parameter „T“ in der ersten Zeile habe ich bei mir auch weggelassen. Sonst ist das Skript super.

Gruß
Till

Hi,

Du solltest das Skript von Pit mit der Endung .pl abspeichern,
da es ein Perl-Skript ist. Dann mit chmod 775
ausführbar machen.

Korrekt. Wie an der ersten Zeile zu erkennen ist.

Ausserdem kannst du das Skript nicht einfach aus dieser HTML
Seite kopieren, da die Umwandluneng der Umlaute in dem Hash
htmlspecials im Browser natürlich auch als Umlaute und nicht
als &‚Buchstabe‘+uml; dagestellt wurden :smile:.

Shit :-/ Hatte es extra vorher ‚encoded‘, aber 's scheint irgendwer oder was hat’s doch ‚gefressen‘ :-///
Test: Ä

Also einfach immer nach dem „=>“ den html-Ausdruck schreiben.

Jep.

Den Parameter „T“ in der ersten Zeile habe ich bei mir auch
weggelassen.

Warum?

Sonst ist das Skript super.

Thx.

da doch einige zwischen linux und unix ähnlich ist: gibt’s
unter linux keinen awk oder einen sed oder einen vi?

Doch.
Die Alternative wäre gewesen, ein Shell-Skript zu schreiben, dass mit ‚sed‘ sucht und ersetzt und dann umbenennt.
Ich hatte aber gerade ‚Bock‘ auf ein Perl-Skript, mehr nicht.

Ob ‚awk‘ nun dafür so ideal ist weiß ich nicht; mag sein.

Aber wie du ‚vi‘ „scripten“ willst, denn alles andere ist unpraktisch um alle (viele) Dateien in einem Verzeichnis durchzugehen, weiß ich noch nicht; vielleicht nur mangels Notwendigkeit mich mit vi-Fernsteuerung beschäftigen zu müssen.

hi!

habe leider das „script“ überlesen … und ja: es gibt mit dem vi möglichkeiten, ihn per script aufzurufen … hab aber keine ahnung mehr wie (mußte nur mal so ein script erweitern … hab’s dann im endeffekt neu geschrieben :frowning:

Ob ‚awk‘ nun dafür so ideal ist weiß ich nicht; mag sein.

naja, mußt halt nur eine pipe mitgegeben - optimal ist’s halt nicht

Aber wie du ‚vi‘ „scripten“ willst, denn alles andere ist
unpraktisch um alle (viele) Dateien in einem Verzeichnis
durchzugehen, weiß ich noch nicht; vielleicht nur mangels
Notwendigkeit mich mit vi-Fernsteuerung beschäftigen zu
müssen.

grüße,
tomh