如果有人(非常不可能)决定输入并验证签名,我需要以一种消除歧义的方式呈现 ASCII 文件以供打印。
我给出了 8 位符号集二维码作为替代方案,但为了存档目的,手动验证将是一个很好的补充。
本质上,我需要一个等宽排版机,它会在遇到 CR/LF 等时排版一个“空格”符号表示空格,排版一个 CR/LF 符号(并转到下一行以便于阅读),从而可以清楚地知道在 CR/LF 之前是否有任何尾随空格,是否存在字符等。
有没有字体可以实现这个目标?*nix 实用程序?TeX 模块/包/派生系统?我在 TeX.SE 上发过类似的问题,但它可能更适合这里。
答案1
作为 savanto 答案的扩展,我创建了一个whitespace
bash 别名,使用适当的 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$