1

我有一个格式为的文本文件

key01=value
key02=value
...
keyN=value

我想检索特定键号的值。我使用文字使它工作,但是在尝试使用$SEARCHKEY变量作为搜索输入时失败了。例如:

$echo $SEARCHKEY
KEY02

$awk -F= -v "searchKey=$SEARCHKEY" '/KEY02/ {print $2 " => " searchKey}' \ 
./parameterValue.lst

输出:

BBBB => KEY02

/KEY02/但是,当我通过以下方式更改文字时,我无法使其工作searchKey

awk -F= -v "searchKey=$SEARCHKEY" '/searchKey/ {print $2 " => " searchKey}' \
./parameterValue.lst

什么都不返回。我究竟做错了什么?

4

2 回答 2

0

尝试这个:

awk -F= -v "searchKey=$SEARCHKEY" '$0 ~ searchKey {print $2 " => " searchKey}' input

-v使用-flag 时,变量作为字符串传递给 awk 。/searchKey/因此搜索字符串“searchKey” 为了防止这种情况,请改用正则表达式匹配运算符~

于 2013-04-30T19:49:25.563 回答
0

您应该避免在此处进行正则表达式匹配,因为它可能会给您带来意想不到的错误,因为/key02/(或$0 ~ searchKey) 也可能匹配key022并给您错误的结果。

您可以使用相等性检查来匹配文字键,而不是正则表达式匹配

awk -F= -v searchKey="$SEARCHKEY" '$1==searchKey{print $2 " => " searchKey}' inFile
于 2013-04-30T20:20:46.283 回答