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
모든 줄에 동일한 수의 문자가 포함되도록 패딩을 만드는 방법을 제안할 수 있습니까?
감사합니다!