在bash中处理转义的UTF8 int的任何简单方法?

时间:2014-02-24 05:53:41

标签: bash shell unicode escaping printf

我们有一个内部实用程序,输出如下:

$ ./my_cmd 
"abc\228\184\173\230\150\135ABC"

转义的int(不是oct)来自utf8流字节,用斜杠分隔,我们可以使用python转义它

>>> ''.join(chr(int(c)) for  c in  r"\228\184\173\230\150\135".split('\\') if c).decode('utf8')
u'\u4e2d\u6587'
>>> print u'\u4e2d\u6587'
中文

我的问题是有没有方便的shell实用程序可以逃脱它而不是python?

它会像这样行事

$ ./my_cmd 
"abc\228\184\173\230\150\135ABC"
$ ./my_cmd  | some_utility
abc中文ABC

我试图研究bash的printf/usr/bin/printf这些似乎无法处理它。可以提出一个很容易记住的perlsed/awk黑客吗?

1 个答案:

答案 0 :(得分:1)

您可以格式化数据以用于recode

$ echo '"\228\184\173\230\150\135"' | tr -c '0-9' '\n' | recode -f d1..data; echo
中文
$