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 mal hier --> (hier klicken). 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. 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...
  2. 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...
  3. Mozilla startet Kampagne gegen Vorratsdatenspeicherung in Deutschland

    Mozilla startet Kampagne gegen Vorratsdatenspeicherung in Deutschland: Mozilla engagiert sich erstmals auch in Deutschland politisch und ruft die Politiker dazu auf, die Vorratsdatenspeicherung zu stoppen. Dazu hat...
  4. MySQL Datenbank / Phpmyadmin Fehler #2002

    MySQL Datenbank / Phpmyadmin Fehler #2002: Wie oben schon beschrieben kommt bei mir immer wenn ich versuche auf Phpmyadmin zu verbinden dieser Fehler : #2002 Die Anmeldung am MySQL-Server...
  5. Daten UND Betriebssystem, alles auf einem SW-RAID1-Array...?

    Daten UND Betriebssystem, alles auf einem SW-RAID1-Array...?: Hallo zusammen Wollte fragen wie man sowas macht, leider finde ich im Internet immer nur die Anleitungen wo davon ausgegangen wird dass eine sep....