2013-05-25 2 views
1

gawkawk 표준의 확장자 (예 : mktime())를 사용하고 싶습니다. 동시에, 나는 잘못된 데이터를 자동으로 생성하는 것보다 프로세스가 실패하게하기 때문에 --lint=fatal 옵션을 사용하려고합니다. 그러나, 내가 이해할 수없는 무언가이다 :(g) awk 호환성 경고를 어떻게 억제 할 수 있습니까?

$ gawk --lint=fatal 'BEGIN { foo = mktime("2013 01 01 12 00 00"); }' 
gawk: cmd. line:1: fatal: `mktime' is a gawk extension 

내가 옵션 --posix 또는 --traditional를 지정 하지을했다, 그래서 gawk 확장이 존재해야한다. 엄격함 (--lint=warning)을 줄이면 스크립트가 작동합니다. 엄격한 수표를 사용하려면 같은 것을 과 같이 말해야합니다. 귀하의 확장 기능 세트를 사용하고 있으며 더 이상 원래 awk 사양과 호환되지 않는다는 것을 알고 있습니다. 어떻게하면됩니까?

답변

2

awk 그 자체에서 수행 할 수 없습니다. man gawk 버전 4.1.0 월 9 2013 :

--lint [= 값]

AWK 다른 구현에 모호한 비 포팅 구조에 대한 경고를 제공한다. 선택적 인수 이 치명적인 경우 lint 경고가 치명적인 오류가됩니다. 이것은 과감 할 수도 있지만, 그 사용은 확실히 청소기 AWK pro- 그램의 개발을 장려합니다. 선택적 인수가 invalid 인 경우 실제로 유효하지 않은 것에 대한 경고 만 발행됩니다. (이 완전히 은 아직 구현되지 않습니다.)

당신은 stderr을 분석하고 단지 당신이보고 싶은 경고를 표시하는 간단한 래퍼 스크립트를 작성할 수 있습니다.

+0

문제는 경고의 표시가 아니며, 문제는 입력 파일의 끝을 지나서'substr()'이 실행될 때마다 중단하라는 것입니다 ... – vwegert

+0

어때요? '--lint'로 대체하고'mktime()'과 같은'gawk' 함수를'system ("date")'ect와 같은 시스템 호출로 대체합니다. –

+0

그건 옵션이 될 것입니다 - 그냥'strftime()'에 대해서 어떻게해야할까요? – vwegert

관련 문제