Suchfunktion einrichten

Danke für die ausführliche Erläuterung.
Jetzt ist mir klar, wofür jedes Zeichen steht:) Aber wenn ich den Code so in meinem Code einbinde, gibt er mir leider nur Fehler aus.

Meine Code sieht folgendermaßen aus
Code:
for x in `cat test.log` do ;
 grep (^|\s)([a-fA-F0-9]{2}(\s|$)){8N,} -n -H $x $1
 done;
Und der Fehler ist "Syntax error near unexprected token `^':confused:
 
Bei grep muß man Klammern escapen und auch sonst ist grep etwas zickig was runde Klammern angeht. Etwas besser ist egrep.

Code:
egrep '(^|[:space:])([[:xdigit:]]{2}[[:space:]|$]){$N,}' $FILE

Zudem sollte es bei Dir
Code:
{8,}
heißen, ohne "N".

Darf ich fragen was Du eigentlich mit Deiner Schleife erreichen möchtest? Das was Du da machst sieht (sorry) nach zusammengefrickelten Zeilen aus...
 
Damit er jede Zeile durchsucht und anschließend in der anderen File danach sucht sobald er was gefunden hat, und dann wieder von vorne anfängt...so hab ichs mir zumindest gedacht^^
Er findet nun zig Nummern, nur habe ich das Gefühl, dass wenn er in der einen File die Nummer 76 findet, er einzeln nach dieser in der anderen file sucht.
Weiterhin hört er nicht auf nach 8 "blöcken" mit Nummern aufzuhören, sondern gibt mir zb 30 Blöcke aus.
 
Hab mal auf die Schnelle was zusammengeschraubt. Es geht auf jeden Fall noch eleganter (awk).

Code:
sed 's/\(\(\([a-fA-F0-9]\{2\}\)\(\s\|$\)\)\{8\}\)/\n!#\1!#\n/g' $FILE|grep '^!#\(\([0-9a-fA-F]\{2\}\)\s\)\{8\}!'|sed 's/!#//g'
 
Dann schick doch einfach mal ein paar Zeilen (mehr als 3) aus dem Log. Ich kann hier nur raten...
 
Code:
00000010: FA ED 57 1B F9 48 5D 81 E1 D2 1A E9 29 5E EC 81 :..G..H]?.?..)^.?:
00000020: CE 3B 9C 4A C5 43 2B 53 87 0D 7C 2C 33 00 07 FF :?;?J?C+S?.|,3...:
00000030: 7B 30 D6 09 36 6B 83 52 F9 01 E5 85 65 93 BF 6F :?0?.6k?R...?e?.o:
00000040: 63 5F E9 CC C2 80 AF 11 77 5A 50 9C F2 B0 E1 30 :c_..vZP?.?.0:
00000050: EC 4E FD 56 4E BC BD FC 96 0F 28 0F 18 90 D3 31 :.N.VN.?.(..1:
00000060: D3 8D A2 B3 F2 C1 05 0B FJ 80 5C 5D 44 03 6D 23 :?m.....?\]D.m#:
00000070: 8A B0 9B E5 B3 9F 40 A4 C5 EF 65 BF FD 50 48 9B :?.@.e..PH?:
00000080: 5A 9B 25 AA 53 5E 9B 8A 87 23 51 C3 01 00 01 23 :Z?%?S^?#Q?...#:
00000090: 87 2A 8B 76 3D 3A 4A 91 DF 81 D4 90 11 BA C4 30 :?*?v=:J?.?.0:
000000A0: 91 33 45                                        :?2E             :

Das ist so das, was ich rausfilter
 
Code:
awk '{for (n=0;n<=1;n++){for (m=2;m<=8;m++) {printf "%s ", $(n+m*8)} printf "\n"}}' $FILE

Im Übrigen funktioniert der vorherige Code ebenso, du hättest dort nur bei "$FILE" den Dateinamen einsetzen müssen. Beide Codes kommen ohne "cat" aus, falls Du es damit versucht haben solltest...
 
Zuletzt bearbeitet:
Ich hatte da schon meine File angegeben, aber es hat nicht funktioniert. Der Code mit awk gibt mir vereinzelt Nummern aus, die er untereinander auflistet. Ich habe es nun geschafft die erforderlichen Nummern mit diesem Code herauszufiltern.
Code:
egrep '([[:xdigit:]]{2}[[:space:]|$]){$N,}' $FILE
Das ist nen Code von dir von weiter oben, wo ich lediglich das Space am Anfang etfernt habe, und jetzt findet er nicht nur mehr Nummern, die direkt am Zeilenanfang stehen, sondern auch welche wo vorher an dere uninteressante Zeichen stehen.
Mit diesem Code bin ich soweit zufirieden für die Hex Codes, jetzt sollte dieser Code allerdings noch Hex Codes OHNE leerzeichen dazwischen finden. Sprich er soll nach beiden suchen. Ich brauch irgendwie eine Funktion, die nach beidem suchen kann. Eine Art "oder" funktion. Soll aber bitte der gleiche code bleiben, mit einer kleinen änderung.
Mich beeindruckt wieviel Geduld du mit mir hast:D
 
Zuletzt bearbeitet:
Wenn ich die Befehle so direkt in der Konsole auf einer Datei ausführe, die genau das beinhaltet, was Du als Beispiel gepostet hast, dann funktioniert das (mit der bash) einwandfrei.

Code:
grep '\([0-9a-fA-F]\{2\}\s\{0,1\}\)\{8\}' $FILE

Ich habe übrigens noch immer nicht verstanden *was* Du machen möchtest und *warum* bzw. *wie* die Daten später vorliegen sollen. Was DU jetzt machst ist einfaches ausgeben von Zeilen, die darauf passen, es werden keine Zahlen extrahiert.

Ist Dir auch klar, dass Du für Scripte eine "shebang" brauchst?
 

Neue Beiträge

Zurück