如何使用Awk读取具有不同编码的文件?

10

如何在 Awk 中正确读取除 UTF8 以外的编码文件?

我有一个使用希伯来语 / Windows-1255 编码的文件。 简单地使用 {print $0} awk 命令输出的结果中会包含 � 等符号,该如何让它正确地读取?


3
这很可能与你的终端有关,而与awk无关。 - Dominic Rodger
1个回答

14

awk本身不支持处理不同的编码。它会遵循环境中指定的语言环境,但最好的方法是在将输入传递给awk之前将其转换为正确的编码。

-f是要转换的格式,-t是目标格式,-c跳过任何无效字符,这些字符会过早终止iconv的操作。当然,--help将提供更多详细信息。

iconv -c -f cp1255 -t utf8 somefile | awk ...

还要注意,awk文件本身(或类似于awk '{print $0 "äöü"}'的CLI)必须采用适当的编码,否则可能会影响输入文件。 - jifb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接