On 09.11.2011 15:00, Lystopad Olexandr wrote:
Hello, Maxim Ignatenko!
On Wed, Nov 09, 2011 at 02:51:32PM +0200
[email protected] wrote about "Re: [freebsd] Раскодировать файл: как?":
On 09.11.2011 14:21, Lystopad Olexandr wrote:
>Здравствуйте!
>
>Дурацкий вопрос ;)
>
>Подскажите, пожалуйста, как привести в человеческий вид файл,
внутри
>которого такое:
>
>\x00\x11\x22 \x00\x00\x5f-e
>
>и тп.
>
>Заранее спасибо.
Да хоть шеллом построчно:
% cat test.txt
\x00\x11\x22 \x00\x00\x5f-e
% sed -e 's,\\,\\\\,g' test.txt | while read line; do echo
"${line}";
done
" _-e
Спасибо, но это не помогло. :(
file говорит:
ASCII text, with very long lines, with no line terminators
Тогда как-то так:
% awk -f decode.awk test.txt | head
" _-e
% cat decode.awk
#!/usr/bin/awk -f
function hex2dec(c)
{
return index("0123456789abcdef", c) - 1
}
{
while (match($0, "\\\\x[0-9a-f][0-9a-f]"))
{
c1 = substr($0, RSTART+2, 1)
c2 = substr($0, RSTART+3, 1)
r = sprintf("%c", hex2dec(c1)*16+hex2dec(c2))
gsub("\\\\x" c1 c2, r)
}
print $0
}
Можно то же самое на перле в одну строчку сделать, если есть желание.