tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1405
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    F0rris F0rris ist offline Mitglied Silber
    Registriert seit
    Jan 2005
    Beiträge
    68
    Hallo zusammen,

    ich bin grade dabei auf meine Linux Server etwas aufzuräumen, Unteranderem habe ich verschiedene Charsset in in meinem webverzeichnis entdeckt.

    Mein Grundgedanke war mit folgenden Befehlen in der sh zu arbeiten: find, awk, file, iconv.

    Code :
    1
    
     find . -regex '.*\.php' -exec file {} --mime-encoding \; | awk -F: '{iconv -f $2 -t utf-8 -o $1.new $1 }'

    Mit find . -regex '.*\.php' Suche ich nur nach PHP-Dateien, um fälschliches überschreiben von Grafiken zu verhindern. Im Zweiten Durchlauf werde ich nur noch nach html Suchen. Der Anhängsel find . -regex '.*\.php' -exec file {} --mime-encoding \; sorgt für die Ausgabe des Dateinamens sowie der Charset der Datei, in meinem Fall iso-8859-1 und us-ascii.

    Die Ausgabe von find übergebe ich an file. Hierfür wird der hinhalt {} von find gefüllt.

    Momentan sieht der Rückgabewert wie folgt aus:
    Code :
    1
    2
    3
    4
    
    root@gr:/var/www/test# find . -regex '.*\.php' -exec file {} --mime-encoding \;
    ./index.php: iso-8859-1
    ./config.php: us-ascii
    [...]

    Nun gehts weiter mit awk -F: '{}'. Hier wird die ausgabe zerteil, in 2 Variablen, $1(= Dateiname) $2(=Charset iso-8859-1). Mit dem Parameter -F: verhinde ich, dass nach Variablen ein Doppelpunkt kommt. Nun kommt das eigentliche Problem, bei der weitergabe an iconv.

    Laut #man iconv steht -f from_charset -t to_charset -o output_file input_file

    wenn ich es nun Händisch eingebe z. B.
    Code :
    1
    
    root@gr:/var/www/test#iconv -f  iso-8859-1 -t utf-8 -o ./newsletter.php.new  ./newsletter.php
    Wird keine ausgabe erzeugt jedoch die Datei angelegt.

    Nun zu meiner eigentlichen Frage:

    Weiß vielleicht jemand weiter, warum bei der übergabe von awk an iconv ein Fehler auftritt?

    Greez F0rris
    Geändert von F0rris (20.06.11 um 13:13 Uhr)
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Bitte poste auch immer die Fehlermeldung.

    iconv ist kein AWK Befehl.

    Du könntest zB. den system() Befehl von AWK verwenden.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. XML Charset
    Von luchs3 im Forum PHP
    Antworten: 5
    Letzter Beitrag: 23.02.09, 16:06
  2. Shell in Shell ohne Inhalt....
    Von Ronin-Jay im Forum Java
    Antworten: 0
    Letzter Beitrag: 17.07.07, 13:07
  3. Problem mit iconv
    Von ZeroEnna im Forum PHP
    Antworten: 4
    Letzter Beitrag: 07.02.07, 16:15
  4. Iconv?
    Von SuReBuRn im Forum PHP
    Antworten: 2
    Letzter Beitrag: 17.01.07, 17:57
  5. Antworten: 0
    Letzter Beitrag: 30.04.04, 10:11

Stichworte