如何使用awk匹配完整的单词

时间:2015-06-02 06:54:12

标签: regex bash awk

我有这个脚本,它将变量$ userId的值作为输入&在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 个答案:

答案 0 :(得分:3)

试试这样:

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