文件中包含俄语西里尔字符的文件的填充不起作用

文件中包含俄语西里尔字符的文件的填充不起作用

我正在尝试在 Unix 中创建一个具有固定列长度的文件。该文件包含俄语西里尔字符,这些字符的解释与正常的 1 字节字符不同。

我正在使用下面的脚本来修改文件(列分隔符是@-@,行分隔符是\r\n):

input_file=$1
output_file=$2

awk -F '@-@' '{printf("%-200s%-200s%-200s%-200s%-200s%-200s%-200s%-200s\r\n", $1, $2, $3, $4, $5, $6, $7, $8)}' $input_file > $output_file

对于具有普通字符的列,输出文件正确包含 200 个字符的列,但对于具有 30 个西里尔字符的列,输出列仅包含 170 个字符。这样,文件中的行将不会具有相同的长度,因为西里尔字符占用 2 个字节,并且代码将解释字节而不是字符。

示例:НИКОЛАЕВНА 有 10 个字符,但脚本将其计算为 20 个,因为它占用 20 个字节。

一个输入文件示例:

НИКОЛАЕВНА@-@russ@-@12345@-@asklle@-@НИКОЛАЕВНА@-@454@-@111@-@asdfg

您能否建议一种创建填充以使所有行具有相同字符数的方法?

谢谢你!

相关内容