使用 tr 去除字符但保留换行符
using tr to strip characters but keep line breaks
我正在尝试格式化一些从 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,所以:
tr -d '[=10=]'
会摆脱它们。
但这并不是真正正确的解决方案。您应该简单地使用 iconv
命令将 UTF-16
转换为 UTF-8
(有关更多信息,请参见其手册页)。当然,这就是您在这里真正想要完成的事情,这将是正确的方法。
这是一个XY problem。您的问题不是删除空字符。您真正的问题是如何将 UTF-16 转换为 UTF-8 或 US-ASCII(我选择 UTF-8 作为保守答案)。
我正在尝试格式化一些从 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,所以:
tr -d '[=10=]'
会摆脱它们。
但这并不是真正正确的解决方案。您应该简单地使用 iconv
命令将 UTF-16
转换为 UTF-8
(有关更多信息,请参见其手册页)。当然,这就是您在这里真正想要完成的事情,这将是正确的方法。
这是一个XY problem。您的问题不是删除空字符。您真正的问题是如何将 UTF-16 转换为 UTF-8 或 US-ASCII(我选择 UTF-8 作为保守答案)。