我正在尝试格式化一些从UTF-16转换为ASCII的文本,输出如下所示:
C^@H^@M^@M^@2^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
T^@h^@e^@m^@e^@ ^@M^@a^@n^@a^@g^@e^@r^@ ^@f^@o^@r^@ ^@3^@D^@S^@^@^@^@^@^@^@^@^@^@^@^@^@^@
我想要的唯一文字是:
CHMM2
Theme Manager for 3DS
所以有一个换行符" \ n"在每一行的末尾和我使用时
tr -cs 'a-zA-Z0-9' 'newtext' infile.txt > outfile.txt
它也剥离了新行,所以所有文本都在一行中的一个大字符串中结束。
任何人都可以协助找出如何仅删除^ @并保留空格和新行吗?
答案 0 :(得分:0)
^@
绝对是空字符,\ 0s,所以:
tr -d '\0'
将摆脱他们。
但这不是真正正确的解决方案。您只需使用iconv
命令将UTF-16
转换为UTF-8
(有关详细信息,请参阅其手册页)。当然,这就是你在这里真正想要完成的事情,这将是正确的方法。
这是XY problem。您的问题不是删除空字符。你真正的问题是如何从UTF-16转换为UTF-8,或者可能是US-ASCII(我选择UTF-8作为保守的答案)。