Linux
如何匹配文件中的字元串,但前提是字元串在第一個欄位中?
如何匹配文件中的字元串,但前提是字元串在第一個欄位中?
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",
使用
awk
:awk '($1=="PATTERN")' infile.txt
當您的欄位由空格分隔時,上面是正確的,如果不是,它可以用
-F
選項提及。如果在變數中設置了 PATTERN 匹配,您應該使用選項告訴它 awk
-v
。awk -v param="PATTERN" '($1==param)' infile.txt
也可以基於是否包含 PATTERN 和
~
.awk -v param="PATTERN" '/$1 ~ param/' infile.txt
或者也
grep
可以使用。grep '^PATTERN.*[^:]'
如果輸入數據是 JSON(看起來很像),可以使用
jq
:$ jq -r '."hbase.tmp.dir"' file.json /var/lib/ambari-metrics-collector/hbase-tmp
顯然,如果存在任何類型的複雜資料結構,則可能必須對其進行修改。