在打印输出中显示空白字符

在打印输出中显示空白字符

如果有人(非常不可能)决定输入并验证签名,我需要以一种消除歧义的方式呈现 ASCII 文件以供打印。

我给出了 8 位符号集二维码作为替代方案,但为了存档目的,手动验证将是一个很好的补充。

本质上,我需要一个等宽排版机,它会在遇到 CR/LF 等时排版一个“空格”符号表示空格,排版一个 CR/LF 符号(并转到下一行以便于阅读),从而可以清楚地知道在 CR/LF 之前是否有任何尾随空格,是否存在字符等。

有没有字体可以实现这个目标?*nix 实用程序?TeX 模块/包/派生系统?我在 TeX.SE 上发过类似的问题,但它可能更适合这里。

答案1

作为 savanto 答案的扩展,我创建了一个whitespacebash 别名,使用适当的 Unicode 字符在任何输出中显示空格。只需通过管道传输即可享受乐趣!

# SP  ' '  0x20 = · U+00B7 Middle Dot
# TAB '\t' 0x09 = → U+FFEB Halfwidth Rightwards Arrow
# CR  '\r' 0x0D = § U+00A7 Section Sign (⏎ U+23CE also works fine)
# LF  '\n' 0x0A = ¶ U+00B6 Pilcrow Sign (was "Paragraph Sign")
alias whitespace="sed 's/ /·/g;s/\t/→/g;s/\r/§/g;s/$/¶/g'"

玩得开心!

$ bash --help | whitespace
GNU·bash,·version·4.4.20(1)-release-(x86_64-pc-linux-gnu)¶
Usage:→bash·[GNU·long·option]·[option]·...¶
→bash·[GNU·long·option]·[option]·script-file·...¶
GNU·long·options:¶
→--debug¶
→--debugger¶
→--dump-po-strings¶
→--dump-strings¶
→--help¶
→--init-file¶
→--login¶
→--noediting¶
→--noprofile¶
→--norc¶
→--posix¶
→--rcfile¶
→--restricted¶
→--verbose¶
→--version¶
Shell·options:¶
→-ilrsD·or·-c·command·or·-O·shopt_option→→(invocation·only)¶
→-abefhkmnptuvxBCHP·or·-o·option¶
Type·`bash·-c·"help·set"'·for·more·information·about·shell·options.¶
Type·`bash·-c·help'·for·more·information·about·shell·builtin·commands.¶
Use·the·`bashbug'·command·to·report·bugs.¶
bash·home·page:·<http://www.gnu.org/software/bash>¶
General·help·using·GNU·software:·<http://www.gnu.org/gethelp/>¶

答案2

在 unix/linux 系统上,您可以通过管道传输文件tr,将某些字符转换为其他字符。例如:

cat file.txt | tr ' \n' '#$'

将会把所有空格翻译为#并将所有换行符翻译为$

如果需要同时转换 CR/LF,则可以使用tr ' ' '#'来更改空格,并将输出管道传输到另一个tr -t '\r\n' '$'以更改换行符。-t指示tr将匹配集截断为替换集的长度。

您还可以使用该实用程序dos2unix先将所有\r\n行尾翻译为更 unix 的格式\n,然后使用第一个选项。

示例(仅限\n):

$ echo "foo bar" | tr ' \n' '#$'
foo#bar$

相关内容