我想获取两个时间戳的时间差,但在将时间戳变量从 shell 传递到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
您需要引用变量以防止 shell 执行分割+全局:
gawk -v FTIMESTAMP="$FTIMESTAMP" -v DSECONDS="$DSECONDS" ...
-v var="$shell_var"
将扩展 中的转义序列的注释$shell_var
。您需要使用ENVIRON
或ARGV
变量$shell_var
按原样从 shell 传递到awk
.
答案2
尝试一下
gawk -v FTIMESTAMP="$FTIMESTAMP" -v DSECONDS=$DSECONDS -f test.awk /home/abc/TShift.csv
里面有一个白色$FTIMESTAMP
或者在调用 shell 中
FTIMESTAMP="2015-07-01 12:30:50"
export FTIMESTAMP
并在 awk 的脚本中(在BEGIN { .. }
部分中)
FTIMESTAMP=ENVIRON["FTIMESTAMP"] ;