Von "sed" nach "awk" portieren?

10/12/2007 - 11:00 von Manuel Reimer | Report spam
Hallo,

bisher nutze ich unter Linux zum Editieren von Strings meist "sed" oder
besser "GNU sed". Allerdings habe ich feststellen müssen, dass das "GNU
sed" mit seinen GNU-Erweiterungen zwar sehr praktisch ist, man mit
diesem Wissen aber auf anderen Unix-Systemen relativ hilflos dasteht.
Nachdem ich auf einem Sun Solaris System nach langem Suchen endlich ein
GNU sed irgendwo im filesystem ausfindig gemacht hatte, war dieses so
alt, dass viele der mir bekannten RegExp-Hacks doch nicht funktioniert
hatten und mit POSIX-Regexp möchte ich mich wirklich nicht abgeben.

Deshalb frage ich mich, ob es nicht sinnvoll wàre komplett von sed nach
awk zu portieren? Lohnt der Aufwand? Wo gibt es gute Infos? Alles was
ich bisher gefunden habe, bringt mich kaum weiter.

So weiß ich z.B. immer noch nicht, wie ich beispielsweise eine Zeile wie

1999-09-30 21:06:43.000000000 +0200

(Ausgabe von stat)

umformatieren kann nach:

19990930210643

(YYYYMMDDhhmmss)

Kann awk mit Klammern in Regulàren Ausdrücken umgehen, bzw. landen auch
bei awk die in Klammer gesetzten Teile in Variablen zum spàteren
Zugriff?

Vielen Dank für jeden Tipp

CU

Manuel

Überwachungsstaat bald Realitàt? Jetzt handeln! www.stasizwopunktnull.de
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯
Die letzte Stimme, die man hört, bevor die Welt untergeht, wird die
eines Experten sein, der versichert, das sei gar nicht möglich.
 

Lesen sie die antworten

#1 Hauke Laging
10/12/2007 - 12:26 | Warnen spam
Manuel Reimer wrote:

Allerdings habe ich feststellen müssen, dass das "GNU
sed" mit seinen GNU-Erweiterungen zwar sehr praktisch ist, man mit
diesem Wissen aber auf anderen Unix-Systemen relativ hilflos dasteht.



Vermutlich verschiebt sich das Problem hin zu den Unterschieden "awk XY" vs.
gawk. Also aufpassen :-) Ob "Standard-awk" mehr kann als Standard-sed,
vermag ich nicht zu sagen, aber da awk nàher an normaler Programmierung
liegt, ist das wesentlich übersichtlicher. Beinahe jede nichttriviale
Operation in sed mutet für mich an wie Programmiererangeberei.


So weiß ich z.B. immer noch nicht, wie ich beispielsweise eine Zeile wie

1999-09-30 21:06:43.000000000 +0200

(Ausgabe von stat)

umformatieren kann nach:

19990930210643

(YYYYMMDDhhmmss)



Na, da steht doch quasi die Antwort:

echo "1999-09-30 21:06:43.000000000 +0200" |
awk '{year=substr($1,1,4);month=substr($1,6,2);day=substr($1,9,2);'\
'hour=substr($2,1,2);minute=substr($2,4,2);second=substr($2,7,2);'\
'output=year month day hour minute second; print output}'

Das sollte so auch die Zeilenumbrüche überleben.


CU

Hauke

Ähnliche fragen