Войти

Показать полную графическую версию : Перекодировать файл с двумя кодировками


Swit0
24-03-2023, 15:38
Добрый день!
Есть файл лога от базы данных, лог этот пишется в двух кодировках, UTF-8 и CP1251.
В итоге на Debian 9 сообщения которые записаны в CP1251 не читабельны.
Пытаюсь конвертировать его в кодировку UTF-8, но безрезультатно - на выходе снова кракозябры, но уже другие.

Утилита enca определяет этот файл ISO 8859-5 standard; ISO Cyrillic

Пытался такими способами:
iconv -f ISO8859-5 pg.log -t UTF-8 -o out.log
enconv -L russian -x UTF-8 pg.log

Все равно остаются кракозябры. Относительно успешно было в виндовом Notepad++, там если менять кодировку я вижу часть сообщений в CP1251, а часть в UTF-8.

Как "приравнять" файл к одной кодировке? Заранее спасибо.
Файл с примером лога приложил.

DJ Mogarych
24-03-2023, 15:55
from='/home/user/pg.log'
to='/home/user/pg-new.log'

while read p; do
if echo "$p" |grep -q --binary-files=text -v '[а-я]'; then
echo "$p" |iconv -f WINDOWS-1251 -t UTF-8 >> $to
else
echo "$p" >> $to
fi
done <$from


Литература:
https://stackoverflow.com/questions/1521462/looping-through-the-content-of-a-file-in-bash
https://unix.stackexchange.com/questions/48535/can-grep-return-true-false-or-are-there-alternative-methods

Swit0
24-03-2023, 16:45
DJ Mogarych, спасибо, попробую.




© OSzone.net 2001-2012