Script gesucht

Dieses Thema im Forum "Scripting und Automatisierung" wurde erstellt von Madcat, 07.01.2005.

  1. Madcat

    Madcat Thread Starter MacUser Mitglied

    Beiträge:
    10.325
    Medien:
    3
    Zustimmungen:
    859
    MacUser seit:
    01.02.2004
    Eins vorweg: Ich hab mir Applescript bisher noch nicht soo genau angeschaut.

    Was ich suche ist ein Script, dass mir ein Textfile umwandelt welches ich selbst vorgebe (kann auch ein Text aus der Zwischenablage sein). Die Umwandlung soll folgendes beinhalten:

    Vor jedem "Return" (also bei jedem Zeilenumbruch) soll "\\" eingefügt werden.

    Hintergrund: Ich hab da ein paar größere Textfiles die ich in ein LaTeX-Dokument einfügen will und die Zeilenumbrüche sollen dabei erhalten bleiben. Manuell dauert das gewiss eine halbe Ewigkeit.

    Wäre super, wenn mir da einer helfen könnte.
     
  2. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Ich würde das mit Perl realisieren.
    Etwa so:
    Code:
    #!/usr/bin/perl 
    #
    ###
    ### slash.pl
    ### Haengt "//" an jedes Zeileende an
    ### 07.01.2005
    ### maceis
    ###
    
    use warnings;
    use strict;
    
    my $number = $#ARGV+1;
    if ($number eq 1)
    {
        &infiletest($ARGV[0]);
        &outfiletest($ARGV[0]);
        open (INFILE, $ARGV[0]) || die "Konnte \"$ARGV[0]\" nicht öffnen";
        open (OUTFILE,">>$ARGV[0].out") || die "Konnte \"$ARGV[0]\.out\" nicht anlegen";
        my $zeile; 
        while ( $zeile = <INFILE>)
        {
            chomp $zeile; 
            $zeile =~ s/$zeile/$zeile\\\\\n/;
            print OUTFILE $zeile; 
        }
    }
    else 
    {
        print "Usage: slash.pl file\n";
        exit;   
    }
    
    # Pruefen, ob Eingabedatei vorhanden ist
    sub infiletest
    {
        unless ( -T $_[0] ) 
        {
            print "Datei \"$_[0]\" existiert nicht oder ist keine Textdatei\n";
            exit;   
        }
    }
    # Pruefen, ob Ausgabedatei vorhanden ist
    sub outfiletest
    {
        my $action;
        if ( -T "$_[0].out" )
        {
            print "Datei \"$_[0].out\" existiert schon\nSoll sie gelöscht werden?[j|n]";
            $action = <STDIN>;
            chop $action;
            if ( $action eq "j") 
            {       
                unlink "$_[0].out";
                return  
            }       
            else    
            {       
                die "Programm wurde beendet\n";
            }       
                 
        }
    }
    Ich habs mal schnell runtergehackt.
    Kann man sicher noch optimieren, aber es funktioniert und immerhin ist schon eine gewisse Fehlerkontrolle eingebaut.

    Das Skript speicherst Du als Textdatei (slash.pl) und machst diese dann ausführbar.
    Aufgerufen wird das Skript dann so:
    ./slash.perl Dateiname
    Die Ausgabe mit Slashes erfolgt dann in der Datei "Dateiname.out"

    HTH
     
  3. Madcat

    Madcat Thread Starter MacUser Mitglied

    Beiträge:
    10.325
    Medien:
    3
    Zustimmungen:
    859
    MacUser seit:
    01.02.2004
    Also als Textdatei hab ich das Script jetzt aber wie mach ich es "ausführbar"? Bin da wohl ein wenig unbeholfen ;)
     
  4. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Macht nichts, jeder fängt mal an.

    Das Skript funktioniert im Terminal ?
    Du gehst also ins Terminal und wechselst in das Verzeichnis, in dem das Skript liegt.
    angenommen es liegt auf Deinem Schreibtisch:
    cd ~/Desktop
    Dann machst Du es ausführbar mit:
    chmod +x slash.pl
    Voraussetzung: Das Skript heisst auch slash.pl und nicht etwa slash.pl.txt
    Wichtig ist außerdem, dass es eine reine Textdatei ist.
    Beim Aufruf musst Du den Dateinamen mit Pfad angeben oder die Datei auf den Desktop kopieren.
    Die Ausgabedatei wird in dem Verzeichnis angelegt, in dem die Eingabedatei liegt.
     
  5. Madcat

    Madcat Thread Starter MacUser Mitglied

    Beiträge:
    10.325
    Medien:
    3
    Zustimmungen:
    859
    MacUser seit:
    01.02.2004
    Ich glaub ich bin zu doof. Im Terminal tut sich bei mir nix wenn ich den Befehl eingebe. Und ja, das Script ist als Textdatei abgelegt.
     
  6. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Es soll sich auch nichts tun, außer, dass eine Datei erstellt wird, die so heisst, wie die Eingabedatei und als letztes Suffix ".out" erhält.
    Das ist die Datei, mit den Slashes ;).
     
  7. Madcat

    Madcat Thread Starter MacUser Mitglied

    Beiträge:
    10.325
    Medien:
    3
    Zustimmungen:
    859
    MacUser seit:
    01.02.2004
    Hm, hab ich ja aber es hat sich nix getan?? Leider.

    Ich hab mich auch grade mal durch Applescript gelesen. Ich bin jetzt eigentlich soweit, dass ich einen Text in ein Eingabefeld einlesen kann, die Absätze lesen kann und auch das ganze ausgeben kann. Nur wie sag ich dem ganzen jetzt, dass ich nach jedem Absatz ein \\ haben will?

    Code:
    set temp to display dialog "Zeilenumbruch für LaTeX" default answer "" buttons {"OK"} default button 1
    set eingabe to text returned of temp
    set end of every paragraph of eingabe to "\\\\"
    display dialog "LaTeX" default answer eingabe
    Irgendwie macht er dabei gar nix. Ich nehm mal an, das "end" mach er nicht. Mit "last character" bekomme ich immer eine Fehlermeldung :(
     
  8. Snow

    Snow MacUser Mitglied

    Beiträge:
    262
    Zustimmungen:
    2
    MacUser seit:
    24.03.2003
    Mit dem 'read'-Befehl kannst du Textdateien lesen und in eine Variable verfrachten. Daraufhin wendest du eine Suchen/Ersetzen-Funktion an.
    Wie das mit AppleScript realisierbar ist, findest du z.B. hier:

    http://www.fischer-bayern.de/phpBB2/viewtopic.php?t=690

    Danach brauchst du den geänderten Text nur noch von der Variable in ein Textdocument schreiben - das funktioniert mit 'write'.
     
  9. Madcat

    Madcat Thread Starter MacUser Mitglied

    Beiträge:
    10.325
    Medien:
    3
    Zustimmungen:
    859
    MacUser seit:
    01.02.2004
    Danke, Snow. Diese Seite hab ich genutz um mir so ein wenig was beizubringen. Die aktuelle Frage ist ja, wie ich an das Ende einer Zeile Zeichen anhängen kann ;)
     
  10. Snow

    Snow MacUser Mitglied

    Beiträge:
    262
    Zustimmungen:
    2
    MacUser seit:
    24.03.2003
    Ich habe die Frage schon verstanden.

    Meine Lösung siehe oben - Text in Variable verfrachten -
    Zeilenschaltungen ersetzen durch "\\" & Zeilenschaltung -
    Den bearbeiteten Text wieder in die Textdatei schreiben.

    Das Suchen/Ersetzen muss ja schließlich nicht auf einzelne Buchstaben oder Zahlen begrenzt sein.
     
Die Seite wird geladen...