LINUX.ORG.RU

Shell-script | фильтрация входного потока


0

0

Быдлокодер на связи.
Есть поток символов (с эмулятора терминала, но это не так важно). Кроме интересующего меня текста, этот поток содержит кучу служебных символов типа форматирования. Соответственно, я хочу оставить только кириллицу и латиницу + всякие точки, запятые, пробелы, скобки, циферки и т.д., а служебные символы отсечь/пропустить/итп. Проще говоря, нужно сделать из входящего потока что-нибудь читабельное.

была мысль сделать что-то вроде
cat fifopipe | sed 's/.../.../' >> file.txt
(где fifopipe - источник символов с терминала), но sed позволяет запомнить только до девяти кусков входящего потока, а у меня ожидается существенно больше.

Собственно вопрос: есть ли другие команды, позволяющие реализовать хитрый план. Или быть может, кто-то из вас настолько хорошо знает как это сделать средствами sed?

Можно ещё что-то вроде sed s/[^A-Za-zА-Яа-я0-9,\.\(\)\[\]\{\}]//g
P.S. Сам не являюсь особым знатоком sed`а.

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

cat fifopipe | tr -cd '\x20-x7E\xC0-\xFF\x0D\x0A\xA8\xB8' >> file.txt
(в fifopipe находится текст в кодировке cp1251).

Ну, использовать в шаблоне tr кириллицу глупо - это ясно после первого же загугливания. Я заменил всё на коды символов. Коды я, конечно, не сам придумал, а взял из гугла. Суть в том, что после tr проходят латинские буквы и цифры. И больше ничего. Даже звёздочка и слеши отрезаются, хотя уж они-то находятся совсем рядом с латиницей - в том же диапазоне [\x20-x7E].
Что я делаю не правильно?

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

Вроде в tr было принято указывать коды символов в восьмиричной записи.

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