Daten (RS232 Text-Stream) anhand dreier Zeilenenden filtern

Dieses Thema: "Daten (RS232 Text-Stream) anhand dreier Zeilenenden filtern" 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 diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    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. 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...
  2. 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...
  3. 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....
  4. 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...
  5. Europäisches Datenportal gestartet

    Europäisches Datenportal gestartet: Die Europäische Kommission hat am 16. November das gemeinsame Datenportal der europäischen Union gestartet. Es ermöglicht den freien Zugriff auf...