Textverarbeitung

Remidemi

Remidemi

Routinier
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.
 
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.
 
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
 
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?
 
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.
 
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
 
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
 
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?
 
Hi

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

Gruß
 
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.
 
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...
 
So ich habe jetzt eine Schleife gebaut, brauch jetzt aber noch ein Befehl welcher die aktuelle Zeile + 3 Zeilen darüber ausgibt.
 
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
 

Ähnliche Themen

Läuft eine Unix-Variante auf PC aus dem Jahr 2015, der nicht Windows-11-fähig ist?

Einplatinencomputer: Raspberry Pi im Holzkoffer emuliert Retro-Spiele

sed - Bitte um Unterstützung

chown Befehl in einem Script

Samba Server funktioniert nach Installation von Nextcloud 26 nicht mehr

Zurück
Oben