Hallo, kennt jemand von Euch ein Programm für die console mit dem man Kolonnen in Textfiles umsortieren kann? Beispiel: Eine Datei mit 4 Zahlen- oder Textkolonnen soll mit cat durch eine Pipe laufen und die Kolonnen sollen eine andere Reihenfolge haben (z.B. Kolonne 1 und 4 vertauschen): cat datei | befehl 1<->4 > neue datei Ich habe schon diverse Manpages und halb freshmeat umgegraben. Aber es war nix dabei. Danke im voraus Gruß Peter --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo, On Thu, 17 Aug 2000, Peter Bossy wrote:
kennt jemand von Euch ein Programm für die console mit dem man Kolonnen in Textfiles umsortieren kann? Beispiel: Eine Datei mit 4 Zahlen- oder Textkolonnen soll mit cat durch eine Pipe laufen und die Kolonnen sollen eine andere Reihenfolge haben (z.B. Kolonne 1 und 4 vertauschen):
cat datei | befehl 1<->4 > neue datei
Ich habe schon diverse Manpages und halb freshmeat umgegraben. Aber es war nix dabei.
Das riecht doch irgendwie nach "awk"..... Leider kann ich Dir auf die Schnelle keine Syntax sagen, ich hoffe aber, der Hinweis bringt Dich auf die richtige Spur. Gruesse Thomson -- Dipl.-Geophys. Thomas Hertweck Geophysikalisches Institut, Universitaet (TH) Karlsruhe Email: ubtj@rz.uni-karlsruhe.de Linux is like a wigwam - no windows, no gates, apache inside! --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Tacho, Peter Bossy wrote:
kennt jemand von Euch ein Programm für die console mit dem man Kolonnen in Textfiles umsortieren kann? Beispiel: Eine Datei mit 4 Zahlen- oder Textkolonnen soll mit cat durch eine Pipe laufen und die Kolonnen sollen eine andere Reihenfolge haben (z.B. Kolonne 1 und 4 vertauschen):
cat datei | befehl 1<->4 > neue datei
Ich habe schon diverse Manpages und halb freshmeat umgegraben. Aber es war nix dabei.
Dafuer ist awk bestens geeignet: cat datei | awk '{ print $4,$2,$3,$1}' >neue_datei mit -F kannst Du das Trennzeichen angeben, default ist blank. -- MfG, M.Stahn ++ JFK: I need this motorcade like a hole in my head! ++ --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Vielen Dank für alle Vorschläge. Das Problem ist gelöst. Werde mir wohl doch noch ein Buch über awk zulegen. Gruß Peter --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Peter Bossy
Das Problem ist gelöst. Werde mir wohl doch noch ein Buch über awk zulegen.
Für soche Fälle ist Perl eigentlich besser/flexibler.
--
R. Cirksena
Hi, Ralf Cirksena schrieb:
Für soche Fälle ist Perl eigentlich besser/flexibler.
Beweise!!! Wo ist der Perl-Einzeiler? MfG Stefan Krister Linux T-Shirt / Sendmail+Squid-Auswertung: http://creative.chaos.de -- You have moved your mouse. Windows must be rebooted for the changes to take effect. --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* Stefan Krister wrote:
* Ralf Cirksena schrieb:
Für soche Fälle ist Perl eigentlich besser/flexibler. Beweise!!! Wo ist der Perl-Einzeiler?
$ cat data|perl -ne 'split; print join(" ", @_[3,1,2,0])."\n"' oder $ cat data|perl -ne 'split; print "$_[1] $_[2] $_[3] $_[4]\n"' oder ... m. --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* Melchior FRANZ wrote:
* Stefan Krister wrote:
* Ralf Cirksena schrieb:
Für soche Fälle ist Perl eigentlich besser/flexibler. Beweise!!! Wo ist der Perl-Einzeiler?
$ cat data|perl -ne 'split; print join(" ", @_[3,1,2,0])."\n"' oder $ cat data|perl -ne 'split; print "$_[1] $_[2] $_[3] $_[4]\n"' oder
Ach, ja. Den kannte ich noch gar nicht (von Andreas gestohlen ;-): $ cat data|perl -ane 'print "@F[3,1,2,0]\n"' interessant wird's dann, wenn mehrere Spalten ausgegeben werden sollen, z.B. sechs, eins bis fuenf, null: $ cat data|perl -ane 'print "@F[6,1..5,0]\n"' m. --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On Thu, 17 Aug 2000, Melchior FRANZ wrote:
* Stefan Krister wrote:
* Ralf Cirksena schrieb:
Für soche Fälle ist Perl eigentlich besser/flexibler.
Beweise!!! Wo ist der Perl-Einzeiler?
$ cat data|perl -ne 'split; print join(" ", @_[3,1,2,0])."\n"' oder $ cat data|perl -ne 'split; print "$_[1] $_[2] $_[3] $_[4]\n"' oder ...
Das hat mich neugierig gemacht: time cat /var/log/messages | awk '{ print $3 }' real 0m5.155s user 0m0.800s sys 0m0.350s time cat /var/log/messages | perl -ne 'split; print "$_[2]\n"' real 0m10.513s user 0m4.240s sys 0m0.420s Carsten --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (7)
-
a8603365@unet.univie.ac.at
-
ci@holmco.de
-
cmeyer@mail.com
-
krs@treu-elektro.de
-
martin.stahn@sskm.de
-
p.bossy@vorwerk-automotive.de
-
ubtj@rz.uni-karlsruhe.de