Вкратце, моя проблема в том, что мне нужен список английских слов, которые выводятся, когда я запускаю «строки» в двоичном файле. В настоящее время файл, который я запускаю, сбрасывает много мусора на экран, и меня интересуют только слова, которые являются, в общем, словами.
Покопавшись здесь, я вижу, что grep -f сопровождается Файл словаря Linux буду делать то, что хочу, но это медленный.
Есть ли более быстрая альтернатива, или действительно так сложно сопоставить английские слова?
Сопоставить несложно, проблема в том, что вы сопоставляете возможно длинный список с действительно длинным. Это занимает много времени просто из-за огромного количества сравнений, которые необходимо провести.
Grep может использовать более быстрый алгоритм сопоставления, если знает, что он соответствует только фиксированным строкам (по сравнению с регулярными выражениями). Вы включаете это поведение, предоставляя -F
аргумент, или используя fgrep
команда.
Полная команда:
strings fileToScan | grep -F -f /usr/share/dict/words
предполагая файл словаря присутствует в / usr / share / dict / words