1

Есть ли лучший способ сделать эту команду, чтобы найти строки в файле, исключая специальные символы?

В настоящее время я занимаюсь:

strings file.abc | grep -v \= | grep -v \] | grep -v \) | more

Я хотел бы добавить больше специальных символов, так что я получаю только AZ и AZ в результатах.

2 ответа2

3

Если вы просто хотите исключить эти специальные символы, вы можете использовать регулярные выражения (например, PCRE, например:

strings file.abc | grep -Pv "[=\])]"

Если вы хотите отображать только строки, содержащие определенные символы, вы можете использовать grep вместо строк.

Команда

grep -Poa "[A-Za-z]{4,}" file.abc

показывает все слова, содержащие не менее четырех букв.

Вот:

  • -o заставляет grep показывать только совпадение (а не всю строку).
  • -a принудительно обрабатывает двоичный файл как текстовый файл.
  • PCRE [A-Za-z]{4,} соответствует четырем или более последовательным буквам.

    Четыре - это номер по умолчанию, используемый строками . Отрегулируйте по мере необходимости.

1

Как насчет

strings file.abc | grep '^[A-Za-z]*$'

?

Это даст вам только строки, состоящие только из букв.

На самом деле, вы, вероятно, хотите строки, содержащие только одну или несколько последовательностей букв; т.е. строки, содержащие буквы и пробелы.  Если это то, что вы хотите, сделайте

strings file.abc | grep '^[A-Za-z ]*$'

с пробелом после z .  Если вы решите включить другие символы, поместите их в квадратные скобки.  (Предупреждение: некоторые символы будут хитрыми, например, сам символ кавычки ' и правая скобка, ] .)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .