Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Daten (RS232 Text-Stream) anhand dreier Zeilenenden filtern

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
atomical



Anmeldungsdatum: 12.01.2003
Beiträge: 93

BeitragVerfasst am: 16. Nov 2005 21:10   Titel: Daten (RS232 Text-Stream) anhand dreier Zeilenenden filtern

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?
_________________
mfg, atomical

Jabber: alext@jabber.ccc.de
 
Benutzer-Profile anzeigen Private Nachricht senden

klopskuchen
prolinux-forum-admin


Anmeldungsdatum: 26.06.2004
Beiträge: 1444

BeitragVerfasst am: 16. Nov 2005 23:11   Titel:

Code:
# cat probe.txt
line 1: \n \n \n
line 2: \n
line 3: \n \n
line 4: \n \n \n


Code:
# grep -n '\\n \\n \\n' probe.txt
1:line 1: \n \n \n
4:line 4: \n \n \n
# :)


MfG, Klopskuchen
_________________
When all else fails, read the instructions .
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

atomical



Anmeldungsdatum: 12.01.2003
Beiträge: 93

BeitragVerfasst am: 17. Nov 2005 7:00   Titel:

Nicht falsch verstehen - in der Datei taucht kein "\" gefolgt von einem n auf, sondern mal in hex
Code:
0A 20 0A 20 0A
- und danach will ich filtern.

Wenn ich grep zählen lasse, kommt das raus:
Code:
[ alex@phoenix] ~/work/fuba (75G free)% grep -c -n ' ' beispiel.txt
16
[ alex@phoenix] ~/work/fuba (75G free)% grep -c -n '\n' beispiel.txt
2
[ alex@phoenix] ~/work/fuba (75G free)% grep -c -n '\n ' beispiel.txt
1
[ alex@phoenix] ~/work/fuba (75G free)% grep -c -n ' \n' beispiel.txt
0
[ alex@phoenix] ~/work/fuba (75G free)% grep -c -n '\n \n' beispiel.txt
0

Offenbar werden einzig die Leerzeichen richtig gezählt ...

http://www.htw-dresden.de/~s50369/beispiel.txt - die betreffende Stelle liegt am Ende der Datei - zwischen der Reihe "=" und dem "abc" - nach den "=" kann ich nicht filtern, das wär nicht eindeutig.
_________________
mfg, atomical

Jabber: alext@jabber.ccc.de
 
Benutzer-Profile anzeigen Private Nachricht senden

atomical



Anmeldungsdatum: 12.01.2003
Beiträge: 93

BeitragVerfasst am: 17. Nov 2005 19:07   Titel:

So - mittlerweile habe ich 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
_________________
mfg, atomical

Jabber: alext@jabber.ccc.de
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy