テキストファイルの末尾のスペースを印刷して表示できるようにしたい(削除できず、表示のみ)。
印刷されていない文字を表示するためにこれを使用しようとしましたが、期待どおりにcat -v
表示されません(行間に視覚的な違いはありません)。例えば
$ printf "foo\nbar \t\n" > file.txt
$ cat -v file.txt
foo
bar
git diff
スペースを印刷/表示するとは、他の行や特殊文字、色(表示ファイルを使用するときなど)に比べて末尾のスペースが存在するという視覚的な人間の表示を意味します。
別の方法がありますか?
注:私はmacOS Sierraを使用していますが、GNUおよびBSDcat
コマンドにアクセスできます。
$ type -a cat
cat is /usr/local/opt/coreutils/libexec/gnubin/cat
cat is /bin/cat
$ cat --version
cat (GNU coreutils) 8.28
$ /bin/cat --version
/bin/cat: illegal option -- -
usage: cat [-benstuv] [file ...]
答え1
gnu cat
-E
このようなスイッチがあるので、入力は次のようになります。
printf " one \ntwo \t\n"
それは印刷されます
one $
two $
sed
たとえば、「raw」モードを使用してこの動作をシミュレートする方法はいくつかあります。
sed -n l infile
または
paste -d '$' infile /dev/null
$
または、テキスト処理ツールを使用して各改行文字の前に...を追加します。
次のことを試してみることもできます。
less -p '[[:blank:]]+$' infile
これにより、パターンが強調表示されます(この場合は末尾のスペース)。