awk命令在控制台中工作但在shell脚本

时间:2016-09-07 15:12:14

标签: shell unix awk

我正在使用以下命令过滤文件中的第四列。它在控制台中运行良好

[User@ipaddress Now]$ creationTime="8:15 PM"
[User@ipaddress Now]$ awk -F, -v var="$creationTime" '{if($4==var) print}' input.txt
serial1,tech,EU,8:15 PM,gan

在shell脚本中添加了相同的命令,但它不起作用。

$ cat test.sh
creationTime=$(date -d '330 minutes'  +"%l:%M %p")

echo $creationTime 
awk -F, -v var="$creationTime" '{if($4==var) print}' input.txt

在执行脚本时输出

[User@ipaddress Now]$ sh test.sh
8:15 PM

input.txt中

serial1,tech,APAC,8:09 PM,anz
serial1,tech,EU,8:15 PM,gan

1 个答案:

答案 0 :(得分:2)

问题可能是$creation_time包含前导空格。当您使用echo进行检查时,它们可能不可见,但它们肯定与$4中的awk不匹配。例如:

$ creationTime=$(date -d '330 minutes'  +"%l:%M %p")
$ echo ">${creationTime}<"
> 4:50 PM<

尝试改为:

creationTime=$(date -d '330 minutes'  +"%l:%M %p" | sed 's/^ *//')