쉘에서 gawk로 타임스탬프 변수 전달

쉘에서 gawk로 타임스탬프 변수 전달

두 타임스탬프의 시차를 얻고 싶지만 타임스탬프 변수를 셸에서 awk.

쉘 코드:

FTIMESTAMP="2015-07-01 12:30:50"
gawk -v FTIMESTAMP=$FTIMESTAMP -v DSECONDS=$DSECONDS -f test.awk /home/abc/TShift.csv 

오류는 다음과 같습니다

gawk: 12:30:50
gawk:   ^ syntax error

이스케이프 문자도 작동하지 않습니다 FTIMESTAMP="2015-07-01 12\:30\:50".

다른 타임스탬프가 있는데 awk그 타임스탬프 간의 시차를 계산하고 싶습니다.

답변1

쉘이 실행되지 않도록 하려면 변수를 인용해야 합니다.분할+전역:

gawk -v FTIMESTAMP="$FTIMESTAMP" -v DSECONDS="$DSECONDS" ...

-v var="$shell_var"주석에서 이스케이프 시퀀스를 확장합니다 $shell_var. 또는 셸 에서 .ENVIRONARGV$shell_varawk

답변2

시도 해봐

gawk -v FTIMESTAMP="$FTIMESTAMP" -v DSECONDS=$DSECONDS -f test.awk /home/abc/TShift.csv 

안에 흰색이 들어있어요$FTIMESTAMP

또는 호출 쉘에서

FTIMESTAMP="2015-07-01 12:30:50"
export FTIMESTAMP

그리고 awk 스크립트( BEGIN { .. }섹션) 에서

FTIMESTAMP=ENVIRON["FTIMESTAMP"] ;

관련 정보