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

qdo*_*dot 11 printing whitespace

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

我提供 8 位符号集 QR 码作为替代,但手动验证将是存档目的的一个很好的补充。

从本质上讲,我需要一个等宽排字机,它可以在遇到 CR/LF 时排版一个“空白”符号来表示空格、一个 CR/LF 符号(并继续到下一行以提高可读性)等等,如果有的话就很明显了是 CR/LF 之前的任何尾随空格,如果存在字符等。

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

Mes*_*ion 14

作为 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'"
Run Code Online (Sandbox Code Playgroud)

玩得开心!

$ 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/>¶
Run Code Online (Sandbox Code Playgroud)


小智 7

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

cat file.txt | tr ' \n' '#$'
Run Code Online (Sandbox Code Playgroud)

将所有空格#和所有换行符转换为$.

如果您需要一起转换 CR/LF,您可以使用tr ' ' '#'更改空格,并将输出管道转换为另一个tr -t '\r\n' '$'以更改换行符。该-t通知tr的匹配组截断到更换集的长度。

您还可以使用该实用程序dos2unix首先将所有\r\n行结尾转换为 more unix \n,然后使用第一个选项。

示例(\n仅限):

$ echo "foo bar" | tr ' \n' '#$'
foo#bar$
Run Code Online (Sandbox Code Playgroud)