Anna: Datum ersetzen mit sed

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

  1. 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

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. 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

      1. 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

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. 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 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

          % 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

          1. 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 2008

            es 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

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. 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

              1. 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 Escaping

                ich 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

                --
                Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de
                1. 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

                  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

                  1. 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

                    --
                    Nur selber lernen macht schlau
                    http://bergpost.annerschbarrich.de
  2. 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