Datum ersetzen mit sed
Anna
- programmiertechnik
Hallo liebe Forumsgemeinde!
in meiner command_file steht folgendes:
s/(Mon|Tue||Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[[:space:]]{1,2}[[:digit:]]{1,2} [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2} CET [[:digit:]]{4}//g;
p;
aufrufen tue ich es wie folgt:
sed -n -f command_file test > test1
das Datum sieht z.B. wie folgt aus:
Fri Nov 21 12:13:14 CET 2008
Sat Nov 1 12:13:14 CET 2008
woran könnte es liegen, dass das Datum nicht ersetzt wird?
wie kann ich bei ein FreeBSD 6.2 System die sed Version ermitteln?
sed --help, sed -V, sed -v, sed --version oder sed -version
ich erhalte immer eine Fehlermeldung "illegal option", z.B.
sed: illegal option -- v
Anna
Hello,
mit diesem Pattrern geht es:
s/(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) +[0-9]+ [0-9]{2}:[0-9]{2}:[0-9]{2} CET [0-9]{4}//g;
p;
Wann und warum man bei sed etwas escapen muss, ist mir allerdings auch noch nicht klar.
Da muss ich auch jedes Mal noch herumprobieren.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg

Hallo
mit diesem Pattrern geht es:
s/(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) +[0-9]+ [0-9]{2}:[0-9]{2}:[0-9]{2} CET [0-9]{4}//g;
p;Wann und warum man bei sed etwas escapen muss, ist mir allerdings auch noch nicht klar.
Da muss ich auch jedes Mal noch herumprobieren.
das funktioniert nur auf mein debian unstable System jedoch nicht auf dem FreeBSD System
das muss an der sed Version liegen
debian verwendet gnu sed, FreeBSD nur sed
Anna
Hello,
das funktioniert nur auf mein debian unstable System jedoch nicht auf dem FreeBSD System
das muss an der sed Version liegen
debian verwendet gnu sed, FreeBSD nur sed
Wie wäre es, erst mal langsam anzufangen. Tausch doch erstmal nur ein Wort aus...
Und dann würde ich für den Befehlsstring auch nur einfache Häkchen nehmen in der Shell
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg

Hallo
das funktioniert nur auf mein debian unstable System jedoch nicht auf dem FreeBSD System
das muss an der sed Version liegen
debian verwendet gnu sed, FreeBSD nur sedWie wäre es, erst mal langsam anzufangen. Tausch doch erstmal nur ein Wort aus...
Und dann würde ich für den Befehlsstring auch nur einfache Häkchen nehmen in der Shell
% echo "Sat Nov 1 12:13:14 CET 2008" |sed -e 's/(Nov)/xxx/g'
Sat xxx 1 12:13:14 CET 2008
% echo "Sat Nov 1 12:13:14 CET 2008" |sed -e 's/(Nov|Dec)/xxx/g'
Sat Nov 1 12:13:14 CET 2008
es scheint an der Pipe zu liegen... hm...
Anna
Hello,
Wie wäre es, erst mal langsam anzufangen. Tausch doch erstmal nur ein Wort aus...
Und dann würde ich für den Befehlsstring auch nur einfache Häkchen nehmen in der Shell% echo "Sat Nov 1 12:13:14 CET 2008" |sed -e 's/(Nov)/xxx/g'
Sat xxx 1 12:13:14 CET 2008
% echo "Sat Nov 1 12:13:14 CET 2008" |sed -e 's/(Nov|Dec)/xxx/g'
Sat Nov 1 12:13:14 CET 2008es scheint an der Pipe zu liegen... hm...
Und nun mal mit einfachen Häkchen ohne das Escaping bei der Pipe.
Ich glaube, die Klammern brauchen bei beiden Versionen (BSD und Debian) ein Escaping
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg

Hallo
Und nun mal mit einfachen Häkchen ohne das Escaping bei der Pipe.
Ich glaube, die Klammern brauchen bei beiden Versionen (BSD und Debian) ein Escaping
ich versteh nicht so ganz, was du meinst
Anna
Hello,
Und nun mal mit einfachen Häkchen ohne das Escaping bei der Pipe.
Ich glaube, die Klammern brauchen bei beiden Versionen (BSD und Debian) ein Escapingich versteh nicht so ganz, was du meinst
Meine Idee dazu war nur, dass Du doch sicherlich auf den beiden Systemen nicht dieselbe Shell hast und die bash sich das | auch in Häkchen greift, die ksh es aber nicht tut.
Wie gesagt, nur eine Idee, ich habe die Shell hier jetzt nicht zur Verfügung, aber irgend eine solche Absonderlichkeit hatten wir die letzten Tage gerade am Wickel.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg

Hallo
Und nun mal mit einfachen Häkchen ohne das Escaping bei der Pipe.
Ich glaube, die Klammern brauchen bei beiden Versionen (BSD und Debian) ein Escapingich versteh nicht so ganz, was du meinst
Meine Idee dazu war nur, dass Du doch sicherlich auf den beiden Systemen nicht dieselbe Shell hast und die bash sich das | auch in Häkchen greift, die ksh es aber nicht tut.
Wie gesagt, nur eine Idee, ich habe die Shell hier jetzt nicht zur Verfügung, aber irgend eine solche Absonderlichkeit hatten wir die letzten Tage gerade am Wickel.
ich verwende bei beiden Systemen die bash
FreeBSD 6.2
GNU bash, version 3.1.17(0)-release (i386-portbld-freebsd6.2)
Copyright (C) 2005 Free Software Foundation, Inc.
debian unstable
GNU bash, version 3.2.39(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
Anna
Hello,
ich verwende bei beiden Systemen die bash
ist ja ulkiglich, dass es dann nicht funzt[tm]
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg

Hallo
in meiner command_file steht folgendes:
s/(Mon|Tue||Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[[:space:]]{1,2}[[:digit:]]{1,2} [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2} CET [[:digit:]]{4}//g;
der obige Ausdruck hat ein kleinen Fehler, hier der korrigierte
s/(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[[:space:]]{1,2}[[:digit:]]{1,2} [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2} CET [[:digit:]]{4}/xxx/g;
auf mein debian unstable System wird das Datum ersetzt
debian unstable: echo "Sat Nov 1 12:13:14 CET 2008" |sed -e "s/(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[[:space:]]{1,2}[[:digit:]]{1,2} [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2} CET [[:digit:]]{4}/xxx/g;"
xxx
FreeBSD 6.2: echo "Sat Nov 1 12:13:14 CET 2008" |sed -e "s/(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[[:space:]]{1,2}[[:digit:]]{1,2} [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2} CET [[:digit:]]{4}/xxx/g;"
Sat Nov 1 12:13:14 CET 2008
Anna