printf("TRL1%13s%013s%07s%07s%80s99%74s", nTotDBAmt, nTotCRAmt, nTotDBCnt, nTotCRCnt,"", "") >> sDAT_FILE
우리는 Unix에서 Linux로 마이그레이션하고 있습니다. 이 명령은 유닉스에서는 잘 작동하지만 리눅스에서는 작동하지 않습니다. 그것은 인쇄한다
TRL1 46038002 1270804215 1857 1843 99
0 대신 공백을 인쇄합니다.
답변1
리눅스는 보통GNU awk설치하다. 어떤 버전인지는 모르겠습니다앗%s 형식 문자열의 앞에 오는 0이 지원되지만 비표준인 것 같습니다.
%013s 대신 %013d를 사용해 보세요.
답변2
질문에서 달성하려는 목표가 정확히 무엇인지 명확하지 않습니다.
십진수를 인쇄하고 싶다면 다음과 같이 쓰겠습니다.
printf("%013d",a);
0
- 공백 대신 0으로 왼쪽 숫자를 채웁니다.
문자를 인쇄하고 싶다면 다음과 같이 쓰겠습니다.
printf("%*s",13,"string which needs to be printed")
여기에서는 printf()에 대한 정수 인수로 인쇄할 문자 길이를 지정합니다. *
이는 전달된 인수로 대체됩니다.