Команда Linux для пошуку рядків у файлі двійкового або не-ascii


39

Чи є якась команда linux для витягування всіх рядків ascii з виконуваного файлу чи іншого двійкового файлу? Я гадаю, я міг би це зробити з грепом, але я пам’ятаю, де я чув, що така команда існувала?

Відповіді:


72

Команда, яку ви шукаєте, така strings

Його ім'я досить зрозуміле, воно витягує будь-який рядок для друку із заданого файлу.

man strings дає:

STRINGS (1)


Рядки NAME - знайдіть рядки для друку в об'єкті чи іншому бінарному файлі

СИНОПИС
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]


10

Команда рядків - це спосіб вирішити цей конкретний тип проблем. Іноді вам також доводиться виводити трубку, щоб зафіксувати .

Наприклад:

strings somebinaryfile | grep textuwanttofind


3

Команда od може це зробити:

od -c *filename*

3
так, це витягує символи ASCII, але самі по собі це не рядки. Я думаю, що "рядки" є більш корисними для більшості випадків.
user5336

Я, не знав про цю команду, але я зараз! AlberT отримав мій '+1' :-)
Kyle Brandt

2

Проблема з використанням рядків полягає в тому, що ви не бачите оточуючих недрукованих друкованих файлів і вам потрібно бути обережними з мінімальною довжиною рядка.

Проблема з використанням

OD -c ФАЙЛ
або
hexdump -C ФАЙЛ
полягає в тому, що послідовність може бути складно знайти, якщо вона обертає лінію.

Щось мені дуже подобається для цього, це ZTreeWin, який працює в WINE на Linux - ви можете зробити багато з цим, але пошук у будь-якому файлі чи редагування бінарних файлів може бути особливо корисним.

Дивовижний пакет ytree доступний для багатьох варіантів Linux та Unix. Він має хороший шестигранний перегляд файлів у будь-якому файлі, але не має пошуку у ZTreeWin (та його 16-бітового попередника, XTree).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.