Необходимо указать кодовые точки с полным значением (не 1F6
, а 1F600
) и обернуть их фигурными скобками. Кроме того, первое значение должно быть меньше, чем последнее значение.
Таким образом, регулярное выражение должно быть "[\x{1F1FF}-\x{1F600}]"
.
Диапазон юникода для смайликов, однако, более сложный, чем вы предполагали. Страница, на которую вы ссылались, не сортирует символы по кодам, а смайлики размещаются во многих блоках. Если вы хотите покрыть почти все эмодзи:
grep -P "[\x{1f300}-\x{1f5ff}\x{1f900}-\x{1f9ff}\x{1f600}-\x{1f64f}\x{1f680}-\x{1f6ff}\x{2600}-\x{26ff}\x{2700}-\x{27bf}\x{1f1e6}-\x{1f1ff}\x{1f191}-\x{1f251}\x{1f004}\x{1f0cf}\x{1f170}-\x{1f171}\x{1f17e}-\x{1f17f}\x{1f18e}\x{3030}\x{2b50}\x{2b55}\x{2934}-\x{2935}\x{2b05}-\x{2b07}\x{2b1b}-\x{2b1c}\x{3297}\x{3299}\x{303d}\x{00a9}\x{00ae}\x{2122}\x{23f3}\x{24c2}\x{23e9}-\x{23ef}\x{25b6}\x{23f8}-\x{23fa}]" contact_names.tokens
(диапазон заимствован из ответ Сухая Гупты на аналогичный вопрос)
Если вам нужно разрешить / запретить определенные блоки эмодзи, см. данные о последовательности на unicode.org . Список смайликов в Википедии также показывает символы в упорядоченных таблицах, но может не отображать последние.