web-dev-qa-db-ja.com

テキストファイルの末尾の空白を表示するにはどうすればよいですか?

テキストファイルの末尾の空白を印刷して表示できるようにしたいと思います(削除するのではなく、表示するだけです)。

印刷されない文字を表示することを想定した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 ...]
2
kenorb

gnu catにはそのための-Eスイッチがあるので、次のような入力を使用します

printf " one \ntwo \t\n"

印刷されます

 one $
two    $

その動作をエミュレートする方法はたくさんあります。 「raw」モードでsedを使用します。

sed -n l infile

または

paste -d '$' infile /dev/null

または、テキスト処理ツールを使用して、各改行の前に$を追加します。

あなたはまた、次のようなものを試すかもしれません

less -p '[[:blank:]]+$' infile

これはパターン(この場合は末尾の空白)を強調表示します...

4
don_crissti