2015-06-02 2 views
1

У меня есть этот скрипт, который принимает значение переменной $ userId как входной & использует его ниже awk.как использовать awk для соответствия полному слову

gzip -cd "input.csv.gz"|/usr/xpg4/bin/awk -v search="$userId" -F, 'BEGIN{ OFS=","} { if(match($4, search)) print $0 }' >>$outputFileNameUser 

формата input.csv.gz, как показано ниже:

gzip -cd input.csv.gz|head -4 
Circle,Date,Time,SubscriberId,OperatorId,VoucherNumber,Status 
UPE,01-JUN-15,20:23:39,9936596081,,1161504025632821,Used 
UPE,01-JUN-15,20:23:39,7755802655,,1161504038349788,Used 
UPE,01-JUN-15,20:23:39,9793948511,,1161504027670339,Used 

команда Этой AWK является соответствие 4-е поля входного файла (т.е. SubscriberId) с переменным $ UserId. В первой строке значение $ 4 равно 9936596081. Итак, даже если я предоставляю «6596» (который входит в состав 9936596081) в качестве $ UserId, он будет соответствовать первой строке. Я хочу, чтобы соответствовать полный номер (9936596081) не какую-либо часть числа .. Я попытался, как это ..

gzip -cd "${outputFileName}"|/usr/xpg4/bin/awk -v search="$userId" -F, 'BEGIN{ OFS=","} { if($4 == "search")) print $0 }' >>$outputFileNameUser 

но не работает .. не могли бы вы помочь мне в этом?

+1

[Это суперпользователя ответ] (http://superuser.com/a/349119/347185), кажется, что вы ищете? –

+0

Привет .. Я добавил дополнительную информацию в исходный вопрос .. – Ankur

ответ

3

Попробуйте так:

awk -v search="$userId" -F, '$4==search' 
+0

Спасибо ... Это сработало .. – Ankur