“无效或不完整的多字节或宽字符”与“列”

“无效或不完整的多字节或宽字符”与“列”

我在 Linux 系统上,尝试在文件上使用“列”,并在该文件中添加了扩展字符以用作分隔符。原因是任何正常的打印字符都可能出现在我不希望发生分隔的地方,因此通过使用“sed”仅查找我执行要分隔的列的那些位置,并在这些位置添加扩展字符,然后使用相同的扩展字符作为“列”分隔符我应该没问题。
唉,尝试使用十六进制字符 AE:

$ column -ts\xAE junk1  
column: Invalid or incomplete multibyte or wide character

...或任何其他扩展字符都不起作用,我已经尝试了所有我能想到的引号和其他技巧的组合。但 ts 听起来像“column”可以使用扩展字符,所以我只需要正确输入内容即可。

答案1

如果你想打印 Unicode 小写 æ,即 u00E6,你可以使用:

$ printf '\u00E6\n' 
æ

因此,如果您的文件如下所示:

$ printf 'foobarbaz\u00E6bar\u00E6baz bar something else whohooo!\n' 
foobarbazæbaræbaz bar something else whohooo!

您可以像这样使用列:

$ printf 'foobarbaz\u00E6bar\u00E6baz bar something else whohooo!\n' | 
    column -ts$'\u00E6' -o "::::::::"
foobarbaz::::::::bar::::::::baz bar something else whohooo!

注意 ANSI 转义格式 ( $'characterCode');看脚本中包含 $"dollarsign-prefixed string" 是什么意思?我使用-o "::::::::"这样你就可以轻松地看到列。

相关内容