我想用十六进制转义代码替换控制字符(ASCII 0-31)和空格(ASCII 32)。比如说。
$ escape 'label=My Disc'
label=My\x20Disc
$ escape $'multi\nline\ttabbed string'
multi\x0Aline\x09tabbed\x20string
$ escape '\'
就上下文而言,我正在写一个脚本,对DVD驱动器进行状态检测。它的输出被设计成可以由另一个程序解析。我的想法是把每条信息作为一个单独的空格分隔的词来打印。比如说。
$ ./discStatus --monitor
/dev/dvd: no-disc
/dev/dvd: disc blank writable size=0 capacity=2015385600
/dev/dvd: disc not-blank not-writable size=2015385600 capacity=2015385600
我想在这个输出中加入光盘的标签。为了配合解析方案,我需要转义空格和换行。我还不如把所有其他的控制字符也做了。
如果可能的话,我宁愿坚持使用bash、sed、awk、tr等工具。不过我想不出一个真正优雅的方法来用这些工具来做这件事。如果没有基本的shell结构和工具的好办法,我愿意使用perl或python。