xxd:如何在不添加“00000000:”的情况下简单地恢复?
xxd: how to simply revert without adding "00000000:"?
有时我的文件中有不需要的字符(数据库表、git 内容等)。当我用 xxd
列出它们时,我有 UTF-8 代码,例如:
e28099
我想知道bash中的这个字符是哪个,所以我输入:
echo -n '00000000: e28099' | xxd -r
我会
’
在控制台上。是否可以不总是包含那些零 (00000000:
)?那么我可以输入 xxd
的任何参数吗:
echo -n 'e28099' | xxd -???
结果将是 ’
?
我建议:
echo 'e28099' | xxd -r -p
输出:
’
$ perl -le'print pack "H*", $ARGV[0]' e28099
’
$ perl -Mv5.10 -Mcharnames=:full -C -e'
$_ = pack "H*", $ARGV[0];
utf8::decode $_;
say;
for my $cp ( unpack "W*", $_ ) {
my $c = chr( $cp );
say sprintf "%s U+%X %s",
( $c =~ /\p{Print}/ && !/\p{Mark}/ ) ? "[$c]" : " ",
$cp,
charnames::viacode( $cp );
}
' e28099
’
[’] U+2019 RIGHT SINGLE QUOTATION MARK
(要使它们使用 STDIN 而不是参数,请将 -le
/-e
替换为 -ple
,将 $ARGV[0]
替换为 $_
。)
有时我的文件中有不需要的字符(数据库表、git 内容等)。当我用 xxd
列出它们时,我有 UTF-8 代码,例如:
e28099
我想知道bash中的这个字符是哪个,所以我输入:
echo -n '00000000: e28099' | xxd -r
我会
’
在控制台上。是否可以不总是包含那些零 (00000000:
)?那么我可以输入 xxd
的任何参数吗:
echo -n 'e28099' | xxd -???
结果将是 ’
?
我建议:
echo 'e28099' | xxd -r -p
输出:
’
$ perl -le'print pack "H*", $ARGV[0]' e28099
’
$ perl -Mv5.10 -Mcharnames=:full -C -e'
$_ = pack "H*", $ARGV[0];
utf8::decode $_;
say;
for my $cp ( unpack "W*", $_ ) {
my $c = chr( $cp );
say sprintf "%s U+%X %s",
( $c =~ /\p{Print}/ && !/\p{Mark}/ ) ? "[$c]" : " ",
$cp,
charnames::viacode( $cp );
}
' e28099
’
[’] U+2019 RIGHT SINGLE QUOTATION MARK
(要使它们使用 STDIN 而不是参数,请将 -le
/-e
替换为 -ple
,将 $ARGV[0]
替换为 $_
。)