AWK printf 구문

AWK printf 구문

나는 printf 문의 구문이 printf format, item1, item2, ...설명된 대로라고 생각합니다.여기

그러나이 문제printf는 다음과 같이 사용됩니다: printf NR "%s ", $0그리고 작동합니다! 왜? 예상되는가?

답변1

여기에는 두 가지 기능이 있습니다: printf, 및AWK 문자열 연결. 결과 값과 문자열을 연결하면 NR "%s "첫 번째 인수로 전달됩니다.NR%sprintf

좀 더 명확하게 쓰는 방법은

printf "%d%s ", NR, $0

답변2

많은 Linux 배포판에서 흔히 볼 수 있는 mawk-1.3.4 에는 다음 방법으로만 우회할 수 있는 매우 큰 파일에 대한 제한이 있으므로 %d로 변경하는 것이 좋습니다 .%.f%d/%u%.f

% date | mawk  '{ NR=9E9-7; printf("%d\f%s\n",NR,$0) }'
2147483647
          Tue Jan 18 01:49:52 EST 2022

% date | mawk  '{ NR=9E9-7; printf("%.f\f%s\n",NR,$0) }'
8999999993
          Tue Jan 18 01:49:58 EST 2022

관련 정보