ファイル内の文字列を一致させる方法は、文字列が最初のフィールドにある場合にのみ可能ですか?

ファイル内の文字列を一致させる方法は、文字列が最初のフィールドにある場合にのみ可能ですか?

ファイル内の文字列を一致させる方法は、文字列が最初のフィールドにある場合にのみ可能ですか?

 param=hbase.tmp.dir
 cat file |   grep $param

 "hbase.local.dir" : "${hbase.tmp.dir}/local",
 "hbase.tmp.dir" : "/var/lib/ambari-metrics-collector/hbase-tmp",
 "hbase.zookeeper.property.dataDir" : "${hbase.tmp.dir}/zookeeper",
 "phoenix.spool.directory" : "${hbase.tmp.dir}/phoenix-spool",

私の予想結果は次のとおりです。

 "hbase.tmp.dir" : "/var/lib/ambari-metrics-collector/hbase-tmp",

答え1

使用awk:

awk '($1=="PATTERN")' infile.txt

フィールドがスペースで区切られている場合、上記の内容は正しいです。そうでない場合は、-F上記のオプションを使用できます。

変数にPATTERN一致を設定した場合は、optionを使用してawkに通知する必要があります-v

awk -v param="PATTERN" '($1==param)' infile.txt 

としてPATTERNが含まれているかどうかに応じて取得することもできます~

awk -v param="PATTERN" '/$1 ~ param/' infile.txt

またはgrep使用することもできます。

grep '^PATTERN.*[^:]'

答え2

入力データがJSON(シェイプなど)の場合は、次のものを使用できますjq

$ jq -r '."hbase.tmp.dir"' file.json
/var/lib/ambari-metrics-collector/hbase-tmp

明らかに、ある種の複雑なデータ構造がある場合は、変更する必要があります。

関連情報