Daten (RS232 Text-Stream) anhand dreier Zeilenenden filtern

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von atomical, 16.11.2005.

  1. #1 atomical, 16.11.2005
    atomical

    atomical castor transporteur

    Dabei seit:
    11.11.2003
    Beiträge:
    133
    Zustimmungen:
    0
    Hallo

    Ein Bash-Problem:

    Ich schreibe Daten von der RS232 Schnittstelle mit - auf das sendende Gerät habe ich keinen Einfluss. Leider wird kein explizites Zeichen gesendet, um die Datensätze voneinander zu trennen, sondern eine Zeichenfolge
    Code:
    \n \n \n
    (LF - SPACE - LF - SPACE - LF) - wobei \n entsprechend für LF steht. Ich müsste also mindestens auf zwei Leerzeichen gefolgt von einem LF filtern können - und mit grep krieg ich das nicht hin.

    Any Hints?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 17.11.2005
    Zuletzt bearbeitet: 17.11.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Folgendes matcht auf alle Zeilen, die nur zwei space = Leer enthalten.
    grep -e '^[[:space:]]\{2\}$'


    Wenn in deinem System egrep -> ( ein Script welches grep mit der Option -E startet) <- existiert, kannst du auch
    egrep
    statt
    grep -e
    verwenden.

    Gruß Wolfgang
    EDIT:
    Ich sehe gerade, dass du wahrscheinlich auf nur ein space matchen müsstest.
    (hier mal mit egrep)
    egrep '^[[:space:]]\{1\}$'
    Multiline geht allerdings mit grep nicht so recht.
    Da muss dann perl ran.
     
  4. #3 atomical, 17.11.2005
    atomical

    atomical castor transporteur

    Dabei seit:
    11.11.2003
    Beiträge:
    133
    Zustimmungen:
    0
    Leider gibt es noch mehr Zeilen, die mehrere Leerzeichen enthalten - das wär nicht eindeutig - und multiline kann grep nicht ...

    ... ich habe mittlerweile 2 Wege - einen aus dem IRC von hp_tux:
    Code:
    cat beispiel.txt | tr '\n' 'ö'|sed 's#ö ö ö#Ö#'|tr ö '\n'
    trickreich - erst alle LF gegen ö ersetzen, dann die Kombination "ö ö ö" gegen Ö und alle übrigen ö's wieder gegen \n - setzt voraus, das ich zwei Zeichen habe (hier ö und Ö), die nicht im Stream vorkommen.

    Die zweite ist ein Perl-Script http://www.mrunix.de/forums/showthread.php?p=189655
     
  5. #4 Wolfgang, 17.11.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Ja mit perl geht das latürnich einfacher, wie ich schon sagte.
    Kurz ungetestet:
    Code:
    echo -e "Achtung Trennzeichen:\n  \n  \ndrei leerzeilen"|perl -ne 'BEGIN{$/="\n  \n  \n"}print $_ if (/^\s{2}\n\s{2}\n$/mg)'
    
    ;)
    Gruß Wolfgang
     
  6. #5 Wolfgang, 17.11.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Als Ergänzung: - sehe gerade , dass du das ja in Dateien splitten willst-

    Code:
    |
    perl -pe 'BEGIN {$/="\n  \n  \n"; $i=0 } open STDOUT, ">$ARGV.$i" && $i++ if (/^\s{2}\n\s{2}\n$/mg)' "dein inputstream als Datei oder FIFO oder what ever"
    
    Geht doch nix über perl gelle ;)

    Gruß Wolfgang
     
Thema:

Daten (RS232 Text-Stream) anhand dreier Zeilenenden filtern

Die Seite wird geladen...

Daten (RS232 Text-Stream) anhand dreier Zeilenenden filtern - Ähnliche Themen

  1. Python Softwareentwickler (Hintergrundentwicklung und Datenanalyse)

    Python Softwareentwickler (Hintergrundentwicklung und Datenanalyse): Stelle : Software-Entwickler Anzahl : 3 Standort : Manila(Die Philippinen) Dezhong Investment LTD. Unser internationales...
  2. Neue Vision von KDE: Datenschutz, Freiheit, Privatsphäre

    Neue Vision von KDE: Datenschutz, Freiheit, Privatsphäre: Das KDE-Projekt hat sich eine neue Leitlinie gesetzt. Schon immer war es das Ziel des Projektes, mit seiner Arbeit die Welt ein Stückchen besser...
  3. Debian-Projektleiterwahl mit nur einem Kandidaten

    Debian-Projektleiterwahl mit nur einem Kandidaten: Bei der anstehenden jährlichen Debian-Projektleiterwahl tritt nur ein Kandidat an, der Franzose Mehdi Dogguy. Der amtierende Projektleiter Neil...
  4. Deutsche Bahn öffnet Fahrplandaten

    Deutsche Bahn öffnet Fahrplandaten: Über ein API stellt die Deutsche Bahn die aktuellen Fahrplandaten unter einer Creative-Commons-Lizenz allen Interessenten zur Nutzung bereit....
  5. Samba Datentransfer bricht ab

    Samba Datentransfer bricht ab: Hallo zusammen, ich suche seit 2 Tagen im Internet nach einer Lösung, aber ich finde einfach keine brauchbare. Folgendes Szenario: Ich vor einem...