为什么 awk 将错误的字符串打印到输出文件中?

为什么 awk 将错误的字符串打印到输出文件中?

我正在尝试使用 awk 读取文件并将输出写入新文件。内容文件示例:

DATE_Login|09:01:20.507|2015-08-13|TIME_Session|00:32:32|MX|w32
DATE_Login|09:01:20.507|2015-08-13|TIME_Session|02:12:21|EU|osx
DATE_Login|09:01:20.507|2015-08-13|TIME_Session|01:15:04|SP|mobile

这是命令行

awk -F "|" 'NR > 4 {print $1 >> "/result.txt" } {if (NR > 15) exit 0}' /SSXCIPSOUR.txt**

但内容文件输出是:

^@2^@0^@1^@5^@-^@0^@8^@-^@1^@3^@ ^@0^@9^@:^@0^@1^@:^@2^@0^@.^@5^@0^@7^@
^@2^@0^@1^@5^@-^@0^@8^@-^@1^@3^@ ^@0^@9^@:^@0^@1^@:^@2^@0^@.^@5^@0^@7^@
^@2^@0^@1^@5^@-^@0^@8^@-^@1^@3^@ ^@0^@9^@:^@0^@1^@:^@2^@0^@.^@5^@0^@7^@

答案1

您的文件可能采用某种 utf-16 编码。file对文件运行命令以找出原因。如果它来自微软,则可能是 utf-16 little-endian。然后,您可以将其转换为 utf-8,这样更容易通过 awk 处理,方法是对文件执行:

iconv -f UTF-16LE -t UTF-8 

相关内容