Hallo, Koenntet ihr euch mal das awk-script http://www.dhaller.de/linux/headmidtail anschauen? -dnh PS: ist aus dem Thread "SuSE 8.1" in suse-linux entstanden, den ich dann in "sed, head und tail" umbenannt habe... Naeheres also dort ;) -- Fenster muss man nur ab und zu putzen, damit wieder mehr Licht rein kommt. Sind sie kaputt, musst Du neue kaufen. Pinguine muss man pflegen - dafür können sie dann Kunststücke, die ein Fenster nie hinkriegt. Genug Heringe, und sie vermehren sich sogar :-) [Arndt Böhm in dcoulh]
Hi, On Sat, 1 Feb 2003, David Haller wrote:
Koenntet ihr euch mal das awk-script http://www.dhaller.de/linux/headmidtail anschauen?
Ja. Nochwas? >-) Also, ich will dir ja nicht die Freude am awk-Hacken verderben, aber das Skript ist recht, hmm, lang fuer das, was es tut. Z.B. die Funktionalitaet deiner -s NUM:LEN Option leasst sich per ueblichen Unix-Tools so erhalten: % cat file | head -n NUM | tail -n LEN Equivalent -e NUM:LEN % cat file | tail -n NUM | head -n LEN Eine Zeile finde ich jedenfalls kleiner als 257 Zeilen, und da deine Version nicht wirklich mehr kann als das, tja, ist mir der Zweck des Skriptes etwas schleierhaft. Sorry, du wolltest laut Subject ja Kritik ;-) Zumal obiges auch besser funktioniert: % ./headmidtail -e 5:3 headmidtail e, 5:3 gawk: ./headmidtail:112: (FILENAME=headmidtail FNR=1) warning: gensub: 3rd argument of 0 treated as 1 _opti = 0 } else _opti++ Wie man sieht, schmeisst gawk noch ne Warnung, und das "e, 5:3" scheint auch nicht wirkich da hinzugehoeren. Ciao, Micha.
Hallo, On Sun, 02 Feb 2003, Michael Matz wrote:
On Sat, 1 Feb 2003, David Haller wrote:
Koenntet ihr euch mal das awk-script http://www.dhaller.de/linux/headmidtail anschauen?
Ja.
Nochwas? >-)
Siehe Subject ;)
Also, ich will dir ja nicht die Freude am awk-Hacken verderben,
Wirst du nicht :)
aber das Skript ist recht, hmm, lang fuer das, was es tut. Z.B. die Funktionalitaet deiner -s NUM:LEN Option leasst sich per ueblichen Unix-Tools so erhalten: [head+tail]
Nein, eben nicht! head+tail war der Ausgangspunkt, der nicht
funktionierte (naja, genauer: bei mir nicht, deswegen nahm ich gleich
sed ;)
Gefragt war 'head|tail + tail|head' gleichzeitig und das geht eben
nicht aus ner pipe. Das ganze fing mit nem "harmlosen"
| sed -n '1{p;n;p;};${x;p;x;p;};h'
in [1] an.
Schau bitte mal (z.B. auf marc.theaimsgroup.com in Archiv der Liste)...
Kurz: folgendes soll z.B. moeglich sein:
====
dh@slarty[4]:~ (0)$ rpm -qa \
--queryformat="%{installtime} %{installtime:date} \t%{name}-%{version}\n"\
| sort -n | cut -d' ' -f2- | headmidtail -1
Mon 16 Aug 1999 07:19:26 PM CEST bc-1.04
Thu 12 Dec 2002 01:09:28 AM CET kbd-1.06
dh@slarty[4]:~ (0)$ headmidtail -s 5:1 -e 7:2 bin/headmidtail
# Copyright (c)2003 by David Haller
Zumal obiges auch besser funktioniert: % ./headmidtail -e 5:3 headmidtail e, 5:3 gawk: ./headmidtail:112: (FILENAME=headmidtail FNR=1) warning: gensub: 3rd argument of 0 treated as 1
Das ist ein "bug". Dort soll tatsaechlich eine 1 statt der 0 stehen (allerdings bekomme ich hier keine Warnung, warum auch immer). $ gawk --version | head -1 GNU Awk 3.0.4
Wie man sieht, schmeisst gawk noch ne Warnung, und das "e, 5:3" scheint auch nicht wirkich da hinzugehoeren.
Jup. Agkch! Ich hab da noch was vom debuggen vergessen:
====
--- bin/headmidtail~ Sun Feb 2 08:06:01 2003
+++ bin/headmidtail Sun Feb 2 14:36:40 2003
@@ -54,3 +54,2 @@
while( (c = getopt(ARGC, ARGV, opts)) != -1 ) {
- print c", "Optarg;
if(c == "s") {
@@ -109,3 +108,3 @@
close(wcl);
- return gensub(/^[ \t]*([0-9]+)[ \t].*/,"\\1",0,tmp);
+ return gensub(/^[ \t]*([0-9]+)[ \t].*/, "\\1", 1, tmp);
====
Also herzlichen Dank fuer's testen! Ich lad gleich das Update hoch.
-dnh
[1] Ich hab den Sub-Thread dann in 'sed, head und tail'
umgenannt, Ausgangspunkt war:
====
X-Message-Number-for-archive: 230916
Date: Fri, 17 Jan 2003 03:29:00 +0100
From: David Haller
participants (2)
-
David Haller
-
Michael Matz