LINUX.ORG.RU

grep cp1251 текст при UTF8 локали

 ,


0

4

Исходные данные:
Файлы cpp для компиляции g++. Имеют кодировку cp1251, при работе с iconv часто перекодирование ломается.
Среда исполнения имеет локаль UTF-8. Надо слова на русском набитых в кодировке cp1251 искать в этих файлах. Есть способы делать grep по файлам не используя iconv по всем файлам?
Типа

# grep "Меню на сегодня" *.cpp
Где «Меню на сегодня» в UTF-8?


Набей:

1) «меню на сегодня» в cp1251
2) Морду тому мудаку что созранил сорцы в cp1251

Edible ()

Где «Меню на сегодня» в UTF-8?

в cp1251.

grep $(echo 'Меню на сегодня'|iconv -t cp1251) *.cpp
t184256 ★★★★★ ()
Ответ на: комментарий от Edible

а тот, кто написал кириллицу в сорцы, уйдет безнаказанным?

t184256 ★★★★★ ()

LANG=ru_RU.cp1251 grep ... перед этим сгенерив соответствующую локаль.

anonymous ()
Ответ на: комментарий от Edible

От Вашей либеральности у меня легкое жжение. Только ASCII и не символом больше, остальное — преступление против человечества.

t184256 ★★★★★ ()

Ещё вариант:

grep -a . *.cpp | iconv -f CP1251 | grep "Меню на сегодня"

ArcFi ()
Ответ на: комментарий от t184256

Спасибо, что-то я не вспомнил , про выражение в переменных.

TomBOY ()
Ответ на: комментарий от t184256

От Вашей либеральности у меня легкое жжение

Что, скрепы разгибаю? А как же факт что в ASCII нет русских символов?

Edible ()
Ответ на: комментарий от Edible

Вот поддерживаю второй вариант.

Никогда в никсоподобных не юзали для кириллицы win1251.

Также я бы бил за досовые EOF в линупсах.

В качестве решения сабжа вариант, конечно, не подойдёт, для этого лучше попробовать вариант, предложенный аноном выше, но это не очень удобно.

r3lgar ★★★★★ ()
Ответ на: комментарий от ArcFi

Слишком много лишнего парсинга, особенно, если файлов и кода много.

r3lgar ★★★★★ ()
Ответ на: комментарий от anonymous

Вооще-то одно другому не противоречит, а даже наоборот, строго гарантирует.

t184256 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.