Schnelles zeilenweises Einsortieren
Schnelles zeilenweises Einsortieren
Hallo Leute,
ich habe 4 Dateien, deren Inhalt Textzeilen sind. Nun möchte ich die Inhalte dieser 4 Dateien zeilenweise in eine 5te Datei "einsortieren" und zwar so:
Inhalt 5te Datei:
1. Zeile der 1. Datei
1. Zeile der 2. Datei
1. Zeile der 3. Datei
1. Zeile der 4. Datei
2. Zeile der 1. Datei
2. Zeile der 2. Datei
...
Die Menge der Zeilen in den jeweiligen 4 Dateien ist unterschiedlich, d.h. die 5te Datei hat zum Schluß unter Umständen nur noch Inhalte ( restlichen Zeilen ) der Datei mit der größten Zeilenmenge.
Wie krieg ich das hin ?
Dank euch.
Gruß
root2root
ich habe 4 Dateien, deren Inhalt Textzeilen sind. Nun möchte ich die Inhalte dieser 4 Dateien zeilenweise in eine 5te Datei "einsortieren" und zwar so:
Inhalt 5te Datei:
1. Zeile der 1. Datei
1. Zeile der 2. Datei
1. Zeile der 3. Datei
1. Zeile der 4. Datei
2. Zeile der 1. Datei
2. Zeile der 2. Datei
...
Die Menge der Zeilen in den jeweiligen 4 Dateien ist unterschiedlich, d.h. die 5te Datei hat zum Schluß unter Umständen nur noch Inhalte ( restlichen Zeilen ) der Datei mit der größten Zeilenmenge.
Wie krieg ich das hin ?
Dank euch.
Gruß
root2root
Re: Schnelles zeilenweises Einsortieren
z.B. so
sed löscht hier die evtl. eingefügten Leerzeilen, falls die Dateien eine unterschiedliche Anzahl von Zeilen haben.
Code: Alles auswählen
paste -d\\n 1.txt 2.txt 3.txt 4.txt | sed '/^$/d' > 5.txt
MfG GoKi
:wq
:wq
Re: Schnelles zeilenweises Einsortieren
Hallo GoKi
danke für Deine schnelle Antwort.
Ich muß mich leicht verbessern:
Die 4 Dateien sind aufgrund eines Suchergebnisses ermittelt. Es könnten noch mehr werden.
1.txt 2.txt ... n.txt. Ansonsten der gleiche Prozess.
Könnte ich jetzt "paste" anstelle von den Dateinamen einen Parameter übergeben, in welchem die Dateinamen gelistet sind ?, z.B. $txtdat ="1.txt 2.txt ... n.txt" (wieviele auch immer)
oder über "find" gleich "pipen" ?
unter http://www.manpagez.com habe ich für paste folgendes konstrukt gefunden
http://www.manpagez.com/man/1/paste/
....
find / -name bin -type d | paste -s -d : -
....
Nun etwas für meine Zwecke abgewandelt:
find . -name | paste -d\\n | sed '/^$/d' > neu.txt
geht das so ?
Danke + Gruß
root2root
danke für Deine schnelle Antwort.
Ich muß mich leicht verbessern:
Die 4 Dateien sind aufgrund eines Suchergebnisses ermittelt. Es könnten noch mehr werden.
1.txt 2.txt ... n.txt. Ansonsten der gleiche Prozess.
Könnte ich jetzt "paste" anstelle von den Dateinamen einen Parameter übergeben, in welchem die Dateinamen gelistet sind ?, z.B. $txtdat ="1.txt 2.txt ... n.txt" (wieviele auch immer)
oder über "find" gleich "pipen" ?
unter http://www.manpagez.com habe ich für paste folgendes konstrukt gefunden
http://www.manpagez.com/man/1/paste/
....
find / -name bin -type d | paste -s -d : -
....
Nun etwas für meine Zwecke abgewandelt:
find . -name | paste -d\\n | sed '/^$/d' > neu.txt
geht das so ?
Danke + Gruß
root2root
Re: Schnelles zeilenweises Einsortieren
Du kannst die Ausgabe eines find Befehls z.B. so einfügen.
Dabei sind die Dateinamen jedoch nach den Inodes sortiert, sortiert nach Dateinamen dann bspw. so
PS: Also ich lese meine Manpages ja direkt per man und nicht über eine Homepage
Code: Alles auswählen
paste -d\\n `find . -name "*.txt"` | sed '/^$/d' > neu.txt
Code: Alles auswählen
paste -d\\n `find . -name "*.txt" | sort` | sed '/^$/d' > neu.txt
Code: Alles auswählen
man paste
MfG GoKi
:wq
:wq
Re: Schnelles zeilenweises Einsortieren
Danke GoKi
funzt prima
Gruß root2root
funzt prima
Gruß root2root
- whisper
- Beiträge: 3379
- Registriert: 23.09.2002 14:32:21
- Lizenz eigener Beiträge: GNU Free Documentation License
-
Kontaktdaten:
Re: Schnelles zeilenweises Einsortieren
Ymmd !GoKi hat geschrieben: PS: Also ich lese meine Manpages ja direkt per man und nicht über eine HomepageCode: Alles auswählen
man paste
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt.
Re: Schnelles zeilenweises Einsortieren
Hallo GoKi
ist für die Argumentübergabe an paste der Block
`find . -name "*.txt"` das gleiche wie
$( find . -name "*.txt" ) ?
schönes WE
gruß root2root
ist für die Argumentübergabe an paste der Block
`find . -name "*.txt"` das gleiche wie
$( find . -name "*.txt" ) ?
schönes WE
gruß root2root
Re: Schnelles zeilenweises Einsortieren
Code: Alles auswählen
man bash
Command Substitution
Command substitution allows the output of a command to replace the command name. There are two forms:
$(command)
or
`command`
MfG GoKi
:wq
:wq
Re: Schnelles zeilenweises Einsortieren
Code: Alles auswählen
2009-07-28-09-34-11
2009-07-27-09-44-03
2009-07-26-15-31-43
2009-07-28-09-31-05
2009-07-26-18-34-48
2009-07-28-09-58-28
2009-07-26-18-46-50
2009-07-27-10-44-49
2009-07-28-09-37-55
2009-07-28-09-37-42
2009-07-27-11-40-56
2009-07-26-17-32-48
2009-07-26-17-55-26
2009-07-27-09-41-06
2009-07-28-09-08-34
2009-07-27-17-35-27
2009-07-27-11-56-55
2009-07-27-09-30-57
2009-07-28-09-41-17
2009-07-29-14-39-48
2009-07-26-12-52-30
2009-07-28-09-56-10
Wie könnte ich das vom ältesten Datum bis zum neuestem Datum sortieren. Die letzten 3 Zahlen bedeuten: Stunden, Minuten und Sekunden
Ich bin gerade dabei ein Skript zu basteln aber es funktioniert immer noch nicht richtig.
Re: Schnelles zeilenweises Einsortieren
Hat wenig mit dem Thema hier zu tun. Aber so wie die Daten formatiert sind reicht doch ein einfaches sort?pinguino hat geschrieben:ich wollte kein 2ten Thread öffnen, deshalb folgende Frage:
Wie könnte ich das vom ältesten Datum bis zum neuestem Datum sortieren. Die letzten 3 Zahlen bedeuten: Stunden, Minuten und Sekunden
Ich bin gerade dabei ein Skript zu basteln aber es funktioniert immer noch nicht richtig.
MfG GoKi
:wq
:wq
Re: Schnelles zeilenweises Einsortieren
Ich versteh dein Problem nicht. Um die von dir angegebene Datei zu sortieren, reicht einpinguino hat geschrieben:das hilft nichts
Code: Alles auswählen
sort dieDatei > sortierteDatei
MfG GoKi
:wq
:wq
Re: Schnelles zeilenweises Einsortieren
Code: Alles auswählen
2008-01-28-09-34-11
2009-07-27-09-44-03
2009-07-26-15-31-43
2009-07-28-09-31-05
2006-07-26-18-34-48
2009-07-28-09-58-28
2005-07-26-18-46-50
2005-03-27-10-44-49
2009-07-28-09-37-55
2009-07-28-09-37-42
2009-07-27-11-40-56
Re: Schnelles zeilenweises Einsortieren
Nach Datum (Erste drei Felder, durch "-" getrennt):
Nach Uhrzeit (Ab Feld 4, wiederum durch "-" getrennt):
Code: Alles auswählen
sort -t- -k 1,3 dates.txt
Code: Alles auswählen
sort -t- -k 4 dates.txt
MfG GoKi
:wq
:wq