Textverarbeitung

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Remidemi, 14.09.2010.

  1. #1 Remidemi, 14.09.2010
    Remidemi

    Remidemi Routinier

    Dabei seit:
    17.03.2008
    Beiträge:
    352
    Zustimmungen:
    0
    Ort:
    Südpfalz
    Hallo

    Ich habe eine Datei mit folgendem Inhalt:

    3 bla bla bla
    1 bla bla bla
    2 bla bla bla
    3 bla bla bla
    4 bla bla bla

    4 bla bla bla
    1 bla bla bla
    2 bla bla bla
    1 bla bla bla
    2 bla bla bla
    3 bla bla bla
    4 bla bla bla

    ........

    So nun möchte ich, dass nur die Zeilen 1-4 ausgegeben werden, quasi als ein Block. Alle anderen Zeilen sind unwichtig.

    Wie bekomme ich das nur hin?

    Danke.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 tuxlover, 14.09.2010
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    info coreutils
    man head
    man tail
     
  4. Pik-9

    Pik-9 Tripel-As

    Dabei seit:
    04.12.2008
    Beiträge:
    168
    Zustimmungen:
    0
    Falls du nur die Zeilen haben willst, vor denen eine 1-4 steht, dann nimmt man grep.

    Code:
    grep -a 1 <Datei>
    zeigt dir nur die Zeilen die eine 1 enthalten.
     
  5. #4 underliner, 14.09.2010
    underliner

    underliner Jungspund

    Dabei seit:
    25.08.2010
    Beiträge:
    16
    Zustimmungen:
    0
    Ort:
    Verden - Lower Saxony
    Hallo Remidemi,

    wie tuxlover schon geschrieben hat benutzt man für dein Problem den Befehl 'head'.

    head -n4 deine_Datei.txt

    Mit head zeigt man die ersten Zeilen einer Datei an und mit tail zeigt man die letzten Zeilen einer Datei an, dieser wird z.B. für Log-Dateien benutzt, wenn man nur die letzten Einträge sehen will.

    Gruß underliner
     
  6. #5 Remidemi, 14.09.2010
    Remidemi

    Remidemi Routinier

    Dabei seit:
    17.03.2008
    Beiträge:
    352
    Zustimmungen:
    0
    Ort:
    Südpfalz
    Hallo
    Danke für die antworten aber so einfach ist es nicht. Ich möchte genau die Zeilen in denen das erste Zeichen 1-4 ist quasi als ein Block gesehen. Diese zeilenblöcke kommen beliebig oft vor und dazwischen Zeilen mit unterschiedlichen nicht aufeinander folgenden Zeichen .

    Versteht ihr?
     
  7. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Ich verstehe nicht. Moechtest Du diejenige 4-er Bloecke ausgeben, bei denen jeweils das erste Zeichen in der Reihenfolge 1,2,3,4 lautet? In Deinem Beispiel waere das der Block, der aus den Zeilen 2-5 besteht, sowie der Block, der aus den Zeilen 9-12 besteht. Wenn das nicht richtig ist, gib doch aus Deinem Beispiel einfach mal an, welches Ergebnis Du haben moechtest.
     
  8. Pik-9

    Pik-9 Tripel-As

    Dabei seit:
    04.12.2008
    Beiträge:
    168
    Zustimmungen:
    0
    Ist es vielleicht. das, was du meinst?

    Code:
    #! /bin/bash
    
    I=1
    while [ $I -lt 5 ]; do
      grep -a $I $1
      let I=I+1
    done
    
    Dieses Script sortiert dir die Einträge nach den Ziffern. Hierbei musst du ihm aber den Dateinamen als Parameter übergeben:
    Code:
    Script.bash <Datei>
    Wenn du den Output in eine Datei schreiben willst machst du einfach:
    Code:
    Script.bash <Datei> > ./outfile.txt
     
  9. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Ginge das nicht einfacher mit 'sort -n -k1 dateiname'?
     
  10. #9 Remidemi, 15.09.2010
    Remidemi

    Remidemi Routinier

    Dabei seit:
    17.03.2008
    Beiträge:
    352
    Zustimmungen:
    0
    Ort:
    Südpfalz
    Hallo

    Rikola, genau so will ich es. Die Zahlen stehen auch in der Datei, diese sollen NICHT die Zeillennummer dartsellen oder sowas. Sortieren kann ich die Datei auch nicht weil dann kommt ja alles durcheinander, denn 1-4 gehört ja zusammen.

    Dieses Ergebnis möchte ich aus meinem Beispiel:
    1 bla bla bla
    2 bla bla bla
    3 bla bla bla
    4 bla bla bla
    1 bla bla bla
    2 bla bla bla
    3 bla bla bla
    4 bla bla bla
     
  11. #10 Remidemi, 15.09.2010
    Remidemi

    Remidemi Routinier

    Dabei seit:
    17.03.2008
    Beiträge:
    352
    Zustimmungen:
    0
    Ort:
    Südpfalz
    Hallo

    Ich versuche jetzt das ganze mit Schleifen abzufangen. Ich möchte die Datei Zeilenweise einlesen mit:

    while read var
    do

    done < datei

    In $var steht dann die Zeile, richtig? Wie kann ich mir das erste Zeichen von $var ausgeben lassen um es mit IF prüfen zu können?
     
  12. #11 Remidemi, 15.09.2010
    Remidemi

    Remidemi Routinier

    Dabei seit:
    17.03.2008
    Beiträge:
    352
    Zustimmungen:
    0
    Ort:
    Südpfalz
    Hi

    Ok bekomme das erste Zeichen mit:
    echo $var | awk '{print $1}'

    Gruß
     
  13. #12 tuxlover, 15.09.2010
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    Du ich habe hier noch ein paar Linux Einsteiger Bücher herumliegen. Die kann ich dir gern für 10 Euro/Stück verkaufen wenn du Sie brauchst.
     
  14. #13 Remidemi, 15.09.2010
    Remidemi

    Remidemi Routinier

    Dabei seit:
    17.03.2008
    Beiträge:
    352
    Zustimmungen:
    0
    Ort:
    Südpfalz
    Hallo

    Danke is nett von dir aber habe hier selbst das Shell Programmierung Buch von Jürgen Wolf vor mir liegen. Aber manche Dinge bringen einfach die Erfahrung...
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 Remidemi, 15.09.2010
    Remidemi

    Remidemi Routinier

    Dabei seit:
    17.03.2008
    Beiträge:
    352
    Zustimmungen:
    0
    Ort:
    Südpfalz
    So ich habe jetzt eine Schleife gebaut, brauch jetzt aber noch ein Befehl welcher die aktuelle Zeile + 3 Zeilen darüber ausgibt.
     
  17. #15 HeadCrash, 15.09.2010
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Du musst dir beim durchlaufen der Schleife jede Zeile für sich anschauen und sie, wenn sie passt in ner Variablen zwischenspeichern.
    Wenn du alle vier aufeinander Folgende hast, kannst du Sie dann am Stück ausgeben.

    mfg
    HeadCrash
     
Thema:

Textverarbeitung

Die Seite wird geladen...

Textverarbeitung - Ähnliche Themen

  1. Emacs als Textverarbeitung?

    Emacs als Textverarbeitung?: Richard Stallman, Präsident von GNU, hat einen bereits 25 Jahre alten Wunsch wieder ins Licht gerückt: Emacs solle WYSIWYG-Fähigkeiten erhalten,...
  2. OwnCloud 6 Beta1 mit webbasierter Textverarbeitung

    OwnCloud 6 Beta1 mit webbasierter Textverarbeitung: Das Team um Erfinder, Chef-Entwickler und CTO von OwnCloud Frank Karlitschek hat kurz nach der Alpha- eine erste Betaversion des kommenden...