Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用tr剥离字符,但保留换行符_Linux_Tr - Fatal编程技术网

Linux 使用tr剥离字符,但保留换行符

Linux 使用tr剥离字符,但保留换行符,linux,tr,Linux,Tr,我正在尝试格式化一些从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 Manage

我正在尝试格式化一些从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
它也在剥离新行,因此所有文本都在一行的一个大字符串中结束


任何人都可以帮助找出如何只去掉^@,并保留空格和新行吗?

这些^@s肯定是空字符,\0s,因此:

tr -d '\0'
你会摆脱他们的

但这并不是正确的解决方案。您只需使用
iconv
命令将
UTF-16
转换为
UTF-8
(有关更多信息,请参阅其手册页)。当然,这就是你在这里真正想要完成的,这将是正确的方法


这是一个很好的例子。您的问题不是删除空字符。您真正的问题是如何从UTF-16转换为UTF-8或US-ASCII(我选择UTF-8作为保守的答案)。

ahhhhh非常感谢,这就成功了。这只是试图从二进制文件中提取信息并输出到文本文件的一个非常复杂的方法中的一个步骤,所以我的解决方案不是很好,但它可以工作,现在有了它,我可以继续前进。