Text absatzweise Teilen

Dieses Thema im Forum "Mac OS X - Unix & Terminal" wurde erstellt von Yoda, 07.04.2006.

  1. Yoda

    Yoda Thread Starter MacUser Mitglied

    Beiträge:
    1.750
    Zustimmungen:
    2
    MacUser seit:
    29.08.2002
    Hallo

    Kennt jemand von euch eine Möglichkeit wie ich einen langen Text absatzweise in einzelne Files Teilen kann?

    ev mit dem Automator

    was noch ideal wäre ist, wenn dann der Filename die erste Zeile des Absatz sein würde.

    danke

    Yoda
     
  2. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Das könnte man relativ leicht mit einem Skript realisieren z.B. in Perl oder mit awk.
    Die Frage, die sich stellt, ist, wie denn ein Absatz erkannt werden kann.

    Befindet sich zB. nach jedem (!) Absatz (und nur da) eine leere Zeile?
    Oder kann man Absätze anhand eines anderen Kriteriums eindeutig erkennen?

    btw: mit Mac OS X hat Deine Frage ja nun gar nichts zu tun.
    Ich schieb Dich mal ins Unix Forum, weil dort u.a. über Skripte diskutiert wird.
     
  3. Yoda

    Yoda Thread Starter MacUser Mitglied

    Beiträge:
    1.750
    Zustimmungen:
    2
    MacUser seit:
    29.08.2002
    ok, danke für deine Hilfe

    ja, die Leerzeile ist nur nach jedem Absatz und nach der ersten Zeile ist ein Return

    im Text selbst sind jeoch auch Returns enthalten - jedoch ohne Leerzeile - also ein Block.

    danke

    Yoda
     
  4. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Okay; folgendes funktioniert:
    Code:
    awk 'BEGIN {RS="";FS="\n"}{outfile=$1; print $0 > outfile}' eintext
    Du gibst das Ganze so im Terminal ein (copy/paste), wobei "eintext" der absolute oder relative Pfad zur Textdatei ist (die übrigens unverändert erhalten bleibt).

    Die Ausgabedateien werden im aktuellen Verzeichnis angelegt.
    Man könnte das aber auch so erweitern, dass diese z.B. in eine bestimmtes Verzeichnis kommen (z.B. in ein bestimmtes Verzeichnis auf dem Schreibtisch).

    Einzige Einschränkung: die jeweils ersten Zeilen der Absätze dürfen keine Sonderzeichen wie z.B. Umlaute enthalten, da sonst die Ausgabedatei nicht angelegt werden kann.

    Wenn Du mit dem Terminal noch nicht zurecht kommst, gib kurz Bescheid.

    HTH
     
  5. Yoda

    Yoda Thread Starter MacUser Mitglied

    Beiträge:
    1.750
    Zustimmungen:
    2
    MacUser seit:
    29.08.2002
    danke für deine schnelle Hilfe - ich glaube das mit den Sonderzeichen ist ein Problem:

    die erste Zeile sieht immer in etwas so aus:

    Sonntag, 1. Januar

    und im Absatz habe ich auch dann Punkte, Doppelpunte und Beistriche....

    input record number 1, file /Users/powermac/Desktop/Text.txt
    source line number 1

    gibt es dafür auch eine Lösung?

    Danke

    Yoda
     
  6. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Das ist beides kein Problem.
    Dazu müsste ich einen Teil des Textes sehen, insbesondere die ersten zwei/drei Zeilen.
     
  7. Yoda

    Yoda Thread Starter MacUser Mitglied

    Beiträge:
    1.750
    Zustimmungen:
    2
    MacUser seit:
    29.08.2002
    vielen Dank für deine Mühe:

    der Text sieht in etwa so aus:

    Sonntag, 1. Januar
    dann kommt der Text, wie er z.B.: hier angeführt wird (es sind auch Zahlen und Satzzeichen enhalten)
    wie oben ist auch ein Return möglich oder auch so (in der Klammer Text mit Zahlen 13:30) und das geht dann weiter bis zum nächsten Text

    Montag, 2. Januar
    dann kommt der Text, wie er z.B.: hier angeführt wird (es sind auch Zahlen und Satzzeichen enhalten)
    wie oben ist auch ein Return möglich oder auch so (in der Klammer Text mit Zahlen 13:30) und das geht dann weiter bis zum nächsten Text


    reicht dir so etwas?

    danke

    Yoda
     
  8. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Ja, das funktioniert bei mir problemlos; schau:
    Code:
    % ls -l                                      2591 
    total 8
    -rw-r--r--   1 maceis  maceis  701  7 Apr 11:01 eintext
    
    % cat eintext
    erster Absatz
    Hier ist also der - erste Absatz - ; was machen wir mit dem?
    Ich denke, den muss man in eine Datei schreiben.
    Und hier probieren wir die Sache mit den Sonderzeichen: äÄöÖüÜß
    
    Sonntag, 1. Januar
    dann kommt der Text, wie er z.B.: hier angeführt wird (es sind auch Zahlen und Satzzeichen enhalten)
    wie oben ist auch ein Return möglich oder auch so (in der Klammer Text mit Zahlen 13:30) und das geht dann weiter bis zum nächsten Text
    
    Montag, 2. Januar
    dann kommt der Text, wie er z.B.: hier angeführt wird (es sind auch Zahlen und Satzzeichen enhalten)
    wie oben ist auch ein Return möglich oder auch so (in der Klammer Text mit Zahlen 13:30) und das geht dann weiter bis zum nächsten Text
    
    % awk 'BEGIN {RS="";FS="\n"}{outfile=$1; print $0 > outfile}' eintext
    
    % ls -l
    total 32
    -rw-r--r--   1 maceis  maceis  255  7 Apr 11:03 Montag, 2. Januar
    -rw-r--r--   1 maceis  maceis  256  7 Apr 11:03 Sonntag, 1. Januar
    -rw-r--r--   1 maceis  maceis  701  7 Apr 11:01 eintext
    -rw-r--r--   1 maceis  maceis  188  7 Apr 11:03 erster Absatz
    Mach mal folgendes:
    Code:
    head -5 Users/powermac/Desktop/Text.txt
     
  9. Yoda

    Yoda Thread Starter MacUser Mitglied

    Beiträge:
    1.750
    Zustimmungen:
    2
    MacUser seit:
    29.08.2002
    komisch, er macht mir keine Files:

    PowerMac:~ powermac$ awk 'BEGIN {RS="";FS="\n"}{outfile=$1; print $0 > outfile}' /Users/powermac/Desktop/Text.txt
    wie oben ist auch ein Return m?glich oder auch so (in der Klammer Text mit Zahlen 13:30) und das geht dann weiter bis zum n?chsten Text
    input record number 1, file /Users/powermac/Desktop/Text.txt
    source line number 1
    PowerMac:~ powermac$ head -5 /Users/powermac/Desktop/Text.txt
    PowerMac:~ powermac$ Return m?glich oder auch so (in der Klammer Text mit Zahlen 13:30) und das geht dann weiter bis zum n?chsten Text
     
  10. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Es sieht so aus, als enthielte die erste nicht leere Zeile Deines Textes Umlaute (... möglich ...)

    Deine Beiträge werden übrigens leichter lesbar, wenn Du Codeteile oder Shellein-/-ausgaben in code Tags packst.
    Code:
    Shelltext[/cod] (hier noch das e anfügen)
     
Die Seite wird geladen...

Diese Seite empfehlen