2016-09-07 3 views
1

Я фильтрую четвертый столбец в файле, используя команду ниже. он отлично работает в консолиКоманда awk работает в консоли, но не работает внутри сценария оболочки

[[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 

Эта же команда добавлена ​​в сценарий оболочки, но она не работает.

$ 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, они могут быть не видны, но они определенно не совпадут $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/^ *//') 
+0

Большое спасибо .. Это сработало! –

Смежные вопросы