我想用十六進制轉義碼替換控制字符(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。
有趣的是,我只是寫了基本相同的東西,並且當我看到你的時候就要提交它。然後,我正要對你的評論,並注意到,當我看到你的編輯:)它不會反斜槓)。 – hobbs