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