验证 perl 脚本创建的文本的行结尾

验证 perl 脚本创建的文本的行结尾

我有兴趣以十六进制模式查看文本文件的内容。

我已经尝试过了:%!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因为默认情况下,listcharsfor 行尾仅包含$。从: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.

要知道实际的行结尾,您可以尝试filecat

$ 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

按行号分隔输出行对。

相关内容