【发布时间】:2019-11-10 13:15:51
【问题描述】:
我们有一个在 prod 上运行的 bash 脚本。有时我们会在 bash 脚本中接收控制字符作为输出,然后将其发送到其他地方进行渲染。
有没有办法使用tr/awk/sed 或其他任何方法将控制字符从 (0-1f) (hex) 转换/转换为 unicode 转义 (\u0000 - \u0037)(octal) [除了换行符 "\n" ]
- 我们不想在 bash 脚本中使用 perl (ord)。 (增加 CPU 使用率)
- 我们不想删除控制字符(使输出看起来很难看)
简单示例:
echo "Hello, this \n is a new line. This \t is a tab"
应该变成:
Hello, this
is a new line. This \u0011 is a tab
参考:
ASCII 表:http://www.asciitable.com/
【问题讨论】:
-
不是您要求的格式,也不是处理
\n,但printf '%q'确实显示控制字符转义 -
@kvantour 解决方案是Java。
-
@Cyrus 我不能在这里发布公司代码。
-
Unicode 通常以十六进制表示。为了使用
sed或awk,您基本上必须创建一个查找表。在前者中,这将是笨拙和丑陋的。后者也好不到哪里去。在 Perl 中,它是十几行代码。我将在下面发布一个 Perl 脚本。