2012-04-04 9 views
0

Ich habe mehrmals versucht, grep oder sed zu tun, was ich will und bisher gescheitert, also wenn jemand helfen kann, wäre ich sehr dankbar!finde Zeichenfolgen, die alnum sind und enthalten können _ oder #

Ich habe eine Textdatei, die mit Zeilen von Zeichenfolgen gefüllt ist, die ich aus einem Speicherauszug mit sysinternals strings.exe gezogen habe. Ich brauche diese Datei jetzt wie viele es bis zu den einzelnen Strings filtern ist nutzlos Müll (zB: & 644 * /; @) oder mehrere Strings auf einer Linie zB angehängt:

&644*/;@ 
string1 
string2;@%string3*£""^string4 

die Saiten Ich brauche kann aus alphanumerischen, Unterstrichen (_) und Hashes (#) bestehen, so dass string_string # 1 oder beispielstring oder beispielstring.

Zusammenfassend, mit dem obigen Beispiel muss ich in der Lage sein, string1, string2, string3 und string4 zu filtern.

Antwort

1

Es ist nicht genau klar, was Sie wollen, aber vielleicht suchen Sie nur für:

< path-to-text-file tr \; '\012' | tr -d -c 'A-Za-z0-9_#' 

Diese alle Zeichen entfernen werden Sie nicht wollen, und konvertieren Semikolons zu Zeilenumbrüchen.

Oder vielleicht möchten Sie gerade

< path-to-text-file tr -sc 'a-zA-Z0-9_#' '\012' 

, die jede Folge von zusammenhängenden Zeichen umwandeln, die Sie mit einem einzigen Newline ignoriert werden sollen.

+0

Danke! der zweite macht genau das, was ich wollte. – Twisted89

0

Sie sed verwenden:

sed 's/[^[:alnum:]_#]\+/\n/g' dump > strings 

oder inline, wenn Ihr sed unterstützt:

sed -i 's/[^[:alnum:]_#]\+/\n/g' dump 
0

Da Sie "644" (das ist eine alphanumerische Zeichenfolge) ausschließen möchten, ich d vorschlagen

grep -o '[[:alpha:]][[:alnum:]_#]*' 
Verwandte Themen