2016-09-07 173 views
1

我正在使用以下命令過濾文件中的第四列。它在控制檯中工作正常awk命令在控制檯中工作,但不在shell腳本中工作

[[email protected] Now]$ creationTime="8:15 PM" 
[[email protected] 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 

輸出,同時execting腳本

[[email protected] Now]$ sh test.sh 
8:15 PM 

input.txt中

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

由於時間是在腳本動態計算,時間戳可能根本就不是被'input.txt' – hek2mgl

回答

2

的問題可能是$creation_time包含前導空格。當您使用echo檢查它時,它們可能不可見,但它們絕對不會匹配$4awk。例如:

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

嘗試,而不是:

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

謝謝你的一部分很多..這工作! –

相關問題