grep / egrep auf das Zeilenende?

K

KBfly

Grünschnabel
Hallo,

ich muß per shell script text files untersuchern. hierbei ist der zeilenanfang (^..xyz) und das
zeilenende ($ ...???aber wie) wichtig zu filtern.
zeilenanfang mit ^ klappt.
zeilenende mit $ klappt nicht. so wie i.d. man page beschrieben?
was mache ich nur falsch?
ich nutze SuSE10.1
Beispiel: ^..'0001|0002' .... für den Zeilenanfang
aber fallse die letzten Stellen (10008749) Null sind dann...
0100010271720131843900000000000000000000040420071016512050000049750000001000000001560000000000000000015601Molesk
ine 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000010008749

Danke für die Hilfe!

Karsten
 
aber fallse die letzten Stellen (10008749) Null sind dann...
01000102717201318439000000000000000000000404200710 16512050000049750000001000000001560000000000000000 015601Molesk
ine 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000
000000000000000000000010008749

Häh?

Poste mal eine ordentlich formattiertes Beispiel wie deine Eingabe aussieht, wie die Ausgabe aussehen soll und welchen grep-Aufruf du verwendest.

Dann sehen wir weiter.
 
Häh?

Poste mal eine ordentlich formattiertes Beispiel wie deine Eingabe aussieht, wie die Ausgabe aussehen soll und welchen grep-Aufruf du verwendest.

Dann sehen wir weiter.

... habe eine mögliche Ursache selber rausgefunden. Die Datei scheint keine "echte reine" Unix Datei zu sein (DosZeilenende). Jedenfalls wenn ich sie nach unix konvertiere, dann gehts. Man sieht es auch am Zeilenende. Nun kann grep /egrep laut manpages auch dos Dateien durchsuchen, irgendwie geht es aber nicht.

zur Zeit habe ich es so gemacht, es ist sicher nicht gerade toll:
cat $EXP/$EXPDATNAME | egrep ^..'0471|0003' | egrep "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" > $EXP/filter.as

$ ... sind Variablen, wo Verzeichnisse bzw. Dateinamen stehen. Eigentlich will ich nach der letzten Verkettung nur die letzten 8 Nullen überprüfen. Die derzeitige Art garantiert mir nur den Erfolg. Aber wie gesagt, die gelieferte Datei $EXPDATNAME hat DOS Zeilenende!

viele Grüße, Karsten
 
Hallo
Deine Angaben sind wirklich etwas unübersichtlich.
Bitte benutze doch code Tags, dann sieht das schon übersichtlicher aus.

Zu grep:
grep kann auch mit Dos-Dateien umgehen, jedoch musst du die Bedingung entsprechend anpassen.
Ein Dosfile hat als Zeilenende CR-LF.
Eine Unixdatei LF
Das bedeutet, wenn du nach einem Zeichen am Ende suchst, dann steht in einer Dosdaei noch diese CR oder auch \r dazwischen.
Ergo trifft das Matching nicht.
Würdest du nun nach einem Zeichen gefolgt von \r am Ende suchen, sollte es klappen.

Gruß Wolfgang
 

Ähnliche Themen

Script zum Bereinigen von Dateien mit Unterverzeichnissen (Schadcode löschen) eilt

Last mit etc/passwd anzeigen lassen

CentOS 6.3 RADIUS - Keine Verbindung möglich

sed im script per crontab

HP PSC 2175 - CUPS druckt nicht

Zurück
Oben