Dienstprogramm "Strings" einschließlich Zeilenvorschub (LF) und Carrier Return (CR)

426
MartinPosider234

Ich möchte eine große Datei (ein unformatiertes Partitionsbild) nach Zeichenfolgen filtern (eine versehentlich gelöschte Textdatei). Das normale "Strings" -Dienstprogramm (Linux-GNU-Strings oder Windows-Sysinternals-Strings) zählt CR und LF nicht als Teile eines Strings, sondern als Separator von Strings. Ich brauche sie, um NICHT als Separator behandelt zu werden. Gibt es ein Werkzeug, das dazu in der Lage ist? Ein Windows-Tool wäre toll, aber wenn ich muss, kann ich ein Live-Linux verwenden.

Danke dir

PS: Undelete-Werkzeuge können diese Datei nicht finden

EDIT: Da viele von Ihnen mich nicht verstanden haben, lassen Sie mich noch einmal erklären:

Die Zeichenfolge "test \ ntext", wobei \ n Newline (Windows oder Unix) ist, wird vom Dienstprogramm "Strings" als "test" und "text" behandelt. Wenn ich nach Zeichenketten mit einer geringen Anzahl von Zeichen suche, gibt es viele "falsch positive" - ​​nur kleine Zeichenfolgen aus einer Binärdatei oder etwas anderem. Da ich nach Textdateien (oder Fragmenten) suchen möchte, ist die Anzahl der Zeichen groß, was gut ist, da viele falsch positive Werte aus der Liste entfernt werden können. ABER: Textdateien enthalten Zeilenumbrüche und das Dienstprogramm für Standardzeichenfolgen (GNU oder sysinternals) "sieht" diese nicht als eine einzige Zeichenfolge.

Meiner Ansicht nach

-w --include-all-whitespace In den angezeigten Zeichenfolgen sind standardmäßig Tabulator- und Leerzeichen enthalten. Andere Whitespace-Zeichen wie Zeilenumbrüche und Zeilenumbrüche dagegen nicht. Die Option -w ändert dies so, dass alle Leerzeichen als Teil einer Zeichenfolge betrachtet werden.

ist die Lösung, aber ich habe es noch nicht getestet.

0
du schreibst "linux oder windows sysinternals" <- was soll das heißen? barlop vor 8 Jahren 0
Ich habe es auf Linux-Strings oder Windows-Sysinternals-Strings fixiert, weil ich denke, dass Sie das gemeint haben. Aber was du damals über CR und LF geschrieben hast .. Bist du sicher? Ich kenne keine Strings, Linux verwendet LF als Zeilenabschlusszeichen (kein CR) und keine Trennzeichen. Windows verwendet CRLF als Zeilentrennzeichen (keine Abschlusszeichen). Aber ich verstehe die allgemeine Idee. Sie möchten eine Zeichenfolge, die CR und LF als Teile einer Zeichenfolge enthält. barlop vor 8 Jahren 0
Ich denke, dass es nicht so funktionieren wird. Es ist fraglich, ob es sich bei einer Textdatei um eine nicht endende Zeichenfolge oder um eine Reihe kleinerer Zeichenfolgen handelt, die durch ein Trennzeichen getrennt sind. In beiden Fällen wäre die Ausgabe von strings.exe für eine Textdatei, in der die Datei als einzelner Blob behandelt wurde, nicht von der Ausgabe zu unterscheiden, wenn sie als Reihe von Zeichenfolgen betrachtet würde. Da die Bytes für die Ausgabe codiert werden, wird das Trennzeichen in der Ausgabe zu einem Zeilenumbruch. Wenn Sie nun nach literalen \ r- oder \ n-Zeichenfolgen fragen, ist dies ein anderes Problem. Frank Thomas vor 8 Jahren 0

1 Antwort auf die Frage

0
stacksharki

Sie müssen sicherstellen, dass Sie die neuesten GNU-Zeichenfolgen verwenden. Ergreifen Sie es hier: " https://www.gnu.org/software/binutils/ . Kompilieren Sie und verwenden Sie die Option -w der String-Option ...

Es ist ziemlich schwierig, nach etwas mit einem sehr genialen Namen wie "Zeichenfolgen" zu suchen, und die Man-Pages, die ich suchte, enthielten nicht die Option -w. Wie lange ist diese Option in GNU-Strings verfügbar ?! Ich denke, das ist die Lösung. Vielen Dank. MartinPosider234 vor 8 Jahren 0
er hat diese Fenster markiert. Ist dies ein Windows-Programm, wenn ja, wo wird es heruntergeladen? Ich stelle fest, dass binutils kein gnuwin32-Paket ist barlop vor 8 Jahren 0