ロシア語のキリル文字を含むファイルのパディングは機能しません。

ロシア語のキリル文字を含むファイルのパディングは機能しません。

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

すべての行に同じ数の文字が含まれるようにパディングを作成する方法を提案できますか?

ありがとうございます!

ベストアンサー1

おすすめ記事