我有兴趣以十六进制模式查看文本文件的内容。
我已经尝试过了:%!xxd
,问题是我无法真正理解哪个十六进制代码代表每个字母,例如,当您使用像 Ultra Edit 这样的编辑器查看十六进制代码时,相应的字母会突出显示。
那么对于我的情况,我该如何做类似的事情呢?
为了向您提供我的问题的背景信息,我有一个perl
创建文件的脚本,我想确保每行仅以0x0A
(LF) 结尾。
奇怪的是,打开文件vim
并使用:set list
,我只能看到$
即使我在脚本上明确做了$line .= "\r\n"
答案1
你可以试试:
open my $fh, '>', 'test.txt'
or die "$!";
binmode $fh;
print $fh "QWERTY\n";
您只能看到$
invim
因为默认情况下,listchars
for 行尾仅包含$
。从:help listchars
:
'listchars' 'lcs' string (default "eol:$")
global
{not in Vi}
Strings to use in 'list' mode and for the :list command. It is a
comma separated list of string settings.
lcs-eol
eol:c Character to show at the end of each line. When
omitted, there is no extra character at the end of the
line.
要知道实际的行结尾,您可以尝试file
或cat
:
$ file test.txt
test.txt: ASCII text, with CRLF line terminators
$ cat -e test.txt
QWERTY^M$
答案2
查看文本文件中不可打印字符的 POSIX 可移植方法可能是:
sed -n l <file
除了可移植之外,sed
如果您避免使用 - 一次,并使用 C 样式或八进制转义符表示的不可打印字符,则默认会打印该行两次,-n
然后立即按照正常显示的方式再次打印该行。
你也可以这样做:
sed =\;l <file
按行号分隔输出行对。