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

/key02/(または$0 ~ searchKey) も一致key022して間違った結果をもたらす可能性があるため、予期しないエラーが発生する可能性があるため、ここで正規表現マッチングを行うことは避けてください。

正規表現一致の代わりに、等値チェックを使用してリテラル キーを一致させることができます。

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