如何匹配文件中的字符串,但前提是该字符串位于第一个字段中?

如何匹配文件中的字符串,但前提是该字符串位于第一个字段中?

如何匹配文件中的字符串,但前提是该字符串位于第一个字段中?

 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

显然,如果存在任何类型的复杂数据结构,则可能必须对其进行修改。

相关内容