16進モードでテキストファイルの内容を見たいです。
これを試してみましたが、:%!xxd
問題は、どの16進コードが各文字を表すのか実際に理解できないことです。たとえば、Ultra Editなどのエディタを使用して16進コードを表示すると、その文字が強調表示されます。
それでは、私の状況に合わせて同様の作業をどのように実行できますか?
私の問題に関する背景情報を提供するためにファイルを生成するスクリプトがあり、各行が(LF)で終わっているperl
ことを確認したいです。0x0A
奇妙なことは、ファイルを開いてvim
を使用すると、スクリプトで明示的に実行されたのに:set list
見えるだけであるということです。$
$line .= "\r\n"
答え1
あなたは試すことができます:
open my $fh, '>', 'test.txt'
or die "$!";
binmode $fh;
print $fh "QWERTY\n";
デフォルトでは行末にのみ含まれているため、$
in のみ表示できます。から:vim
listchars
$
: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スタイルまたは8進エスケープを使用すると、その行はデフォルトで2回印刷され、通常表示されるように-n
すぐに再印刷されます。
次のようにすることもできます。
sed =\;l <file
出力ラインのペアをライン番号で区切ります。