Я пытаюсь создать файл с фиксированной длиной столбца в 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
Не могли бы вы предложить способ создания отступа, чтобы все строки имели одинаковое числосимволов?
Спасибо!