我有一个格式为
的文本文件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
什么都不返回。我做错了什么?
答案 0 :(得分:0)
试试这个:
awk -F= -v "searchKey=$SEARCHKEY" '$0 ~ searchKey {print $2 " => " searchKey}' input
使用-v
- 标志时,变量作为字符串传递给awk。
/searchKey/
因此搜索字符串“searchKey”为了防止这种情况,请使用正则表达式匹配运算符~
。
答案 1 :(得分:0)
你应该避免在这里进行正则表达式匹配,因为它会给你带来意想不到的错误,因为/key02/
(或$0 ~ searchKey
)也可以匹配key022
并给你错误的结果。强>
您可以使用等式检查来匹配文字键
,而不是正则表达式匹配awk -F= -v searchKey="$SEARCHKEY" '$1==searchKey{print $2 " => " searchKey}' inFile