В команде grep я могу изменить на ?

Будет ли grep [0-9] работать так же, как grep [:digit:] ?

4 Solutions collect form web for “В команде grep я могу изменить на ?”

Нет, [0-9] не совпадает с [:digit:] .

[0-9] соответствует цифрам от 0 до 9.

[:digit:] совпадает с 0 по 9, а также цифры на незападных языках (например, на восточном арабском языке).

Точнее, [0-9] гарантируется, что он будет эквивалентен [:digit:] если:

  • синтаксический анализатор regexp поддерживает [:digit:] (т. е. если это не так, то существующая [:digit:] вероятно, не делает то, что вы думаете) и:

  • входной набор символов является одним из таких, как ASCII, где единственными цифрами являются символы 0 и они смежны. Это может быть неверно в (например, unicode (где цифры могут содержать символы, отличные от цифр 0 ), или даже в других 8-битных наборах символов, где 0 может не быть смежным (как это происходит в EBCDIC, цифры 09 смежны).

Примеры исключений из Юникода показаны здесь . Поскольку вы можете видеть, что набор символов Юникода в категории «Число, Цифры, Десятичные числа» включает в себя более 10 цифр ASCII, сопоставляемых [0-9] ; он включает арабский знак, расширенный арабский, ngo и т. д.

Более подробную информацию о цифрах в Юникоде можно найти здесь .

Вы можете изменить [[:digit:]] на [0-9] – примечание [:digit:] находится внутри […] . Это зависит от кодировки ввода. Если это ASCII, я не думаю, что проблема будет. С другими кодировками цифры могут быть не смежными, или диапазон байтов может отличаться. Вы также можете пропустить специальные номера в других системах письма.

'[: digit:]' теоретически более портативен, преимущество в том, что он не будет зависеть от локального набора символов, объединяющего все комбинации.

Пример: с «[: upper:]» vs «[AZ]» нет никакой разницы в ASCII, но есть разница в старой системе IBM EBCDIC , где «[AZ]» будет охватывать 41 символ не 26, (EBCDIC коды 193-233) и поэтому будет соответствовать EBCDIC "} \" et al.

  • Как я могу сопоставить символ разрыва страницы в регулярном выражении?
  • Добавить что-то в каждый список в файле
  • Как фильтровать stdout программы через grep, все еще контролируя программу?
  • Использование регулярных выражений для поиска списка слов. Поиск двух букв вместо 3. Почему?
  • как извлечь значение из строки в xml с помощью grep или awk в Linux
  • Grep 2 разных требования в одном заявлении командной строки
  • grep caret, похоже, не имеет эффекта
  • Как извлечь функцию из файла?
  • Отменить все переменные ENV, соответствующие _PROXY
  • Как я извлекаю пути к файлам из текстового файла?
  • Получить файлы с именем, содержащим значение даты, меньшее или равное заданной дате ввода
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.