Intereting Posts
Внешний загрузочный загрузчик EFI с Debian 7.7 Wheezy Ядро Linux с абсолютно никакой виртуальной памятью Как имитировать Wi-Fi, выходящий за пределы диапазона, включив / выключив точку доступа на моем устройстве Linux? если команда find -exec Как заставить его вернуться в CLI после запуска cnetworkmanager? Рекомендации по распределению для настройки мультисезона с использованием двухголовочного и поддерживающего прямого рендеринга Linux преобразует число в строку на 6-й столбец как проверить rx ring, max_backlog и max_syn_backlog размер Кросс-компилируемый модуль ядра Linux Как добавить сетевой принтер, требующий аутентификации? Просмотр использования виртуальной памяти Загружать псевдонимы из файла .bashrc при использовании sudo Экран GNU: изменение имени нового окна iptables, дифференцировать порты на основе имени хоста USB 3 спонтанно прекратил работу при перезагрузке

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

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

Нет, [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.