grep: Найдите все строки, которые содержат японские кандзи

Необходимо отредактировать CSS темы оболочки гнома. Файл CSS оболочки гнома по умолчанию сохранен в /usr/share/gnome-shell/theme/ - удостоверьтесь, что для редактирования файла Вы имеете "корневые" полномочия, затем редактируете "гнома-shell.css".

Моделирование панели (или панель операций) в #panel (просто делают поиск) - расширение панели происходит, вероятно, из-за эффектов размера шрифта и высоты

14
22.02.2013, 09:30
2 ответа

Это невозможно (не используя огромную таблицу) для сообщения независимо японского кандзи от ханьской идеограммы, не используемой на японском языке (например, китайский или корейский вариант).

Если Вы просто хотите обнаружить какую-либо ханьскую идеограмму в основном диапазоне (\u4e00 к \u9fff) затем, они кодируются в 3 байтах, первый байт всегда между 0xe4 и 0xe9, вторыми и третьими байтами между 0x80 и 0xbf.

Существует две трудности здесь, сначала необходимо сказать grep, что Вы хотите заботиться о байтах и не символах; затем необходимо ввести 0xe4, 0xe9, 0x80 и 0xbf байты для помещения их в regexp выражение.

Я обнаружил, что переключатель-P делает обоих; и строка, которую Вы хотите:

grep -P "[\xe4-\xe9][\x80-\xbf][\x80-\xbf]"

и если Вы хотите кану также:

grep -P "[\xe4-\xe9][\x80-\xbf][\x80-\xbf]|\xe3[\x81-\x83][\x80-\xbf]"
12
27.01.2020, 19:51

Согласно пятой таблице здесь, кандзи является символами между \u4e00 и \u9fff

Моя реализация grep кажется, не может обработать unicode символы (это - GNU grep 2.14 на Archlinux), но мы можем все еще использовать \x. Можно найти соответствующие коды здесь или использовать инструмент как hexedit получить их.

Для чего-либо в нашем диапазоне интереса выше e9 be a5 возвращенный "Недопустимый символ сопоставления", таким образом, это - то, что я придумал:

grep "["$'\xe4\xb8\x80'"-"$'\xe9\xbe\xa5'"]" file.txt
4
27.01.2020, 19:51
  • 1
    +1, Который работает также, но Pablo был немного быстрее... –  Nicolas Raoul 22.02.2013, 12:11
  • 2
    , Который эквивалентен grep "[一-龥]". проблема - это, зависимо от локали, и использует правила сопоставления; то есть, только элементы, для которых определяется порядок сортировки, могут использоваться в диапазоне или подбираться. -P переключатель просто делает двоичное соответствие, независимо от локали. Основанный на локали подход будет использовать культурное определение "диапазона символов", основанный на двоичном файле подход будет использовать определение кодового значения "диапазона". Особенно для алфавитных сценариев вывод очень отличается. (здесь для ханьских идеограмм это примерно эквивалентно), –  Pablo Saratxaga 22.02.2013, 13:49

Теги

Похожие вопросы