将hexdump转换回文本的命令

时间:2017-10-28 13:42:14

标签: bash command-line hexdump xxd

我正在使用Catfish查找包含特定文本的文件。找到的一些文件而不是纯文本包含的东西看起来像十六进制转储:

var width = divs.eq(currentDiv).width()+100;
$(".books-pages").css("transform" , "rotate(0)");
$(".main-menu").parent().css("transform" , "translateX("+width+"px)");
var menu = $(".main-menu").clone();
$("."+id).css("transform" , "translateX("+-width+"px)");

即。总是8列,每行包含16个字节。上面的第一行应该是

<?php
function

是否有命令 unhex 该文件并打印内容?

3 个答案:

答案 0 :(得分:6)

xxd与还原选项-r

一起使用
xxd -p -r file.txt

给出

的结果
<?php

function user_exists($un) {
        return true;
}


?>

答案 1 :(得分:3)

使用bash:

for block in $(cat file); do 
  [[ $block =~ (..)(..) ]] && echo -en "\x${BASH_REMATCH[1]}\x${BASH_REMATCH[2]}"
done

输出:

<?php

function user_exists($un) {
        return true;
}


?>

答案 2 :(得分:0)

echo -e "$(sed -r 's@\s*([a-f0-9][a-f0-9])\s*@\\U\1@g' < test.txt | tr -d '\n')"

sed正则表达式从匹配的开头和结尾捕获两个十六进制字符和零个或多个空格的对偶,并将其转换为unicode字符删除空格(g是全局sostitution和-r enable extended regex)

删除文件中的换行符

echo -e将unicode转换为ascii字符