Como combinar uma string em um arquivo, mas apenas se a string estiver no primeiro campo?

1

Como combinar uma string em um arquivo, mas apenas se a string estiver no primeiro campo?

 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",

Minha saída esperada é:

 "hbase.tmp.dir" : "/var/lib/ambari-metrics-collector/hbase-tmp",
    
por yael 21.08.2017 / 15:35

2 respostas

1

Use awk :

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

acima está correto quando seus campos são delimitados por espaços em branco, caso contrário, ele pode mencionar com a opção -F .

se a correspondência PADRÃO estiver definida dentro de uma variável, você deve dizer ao awk sobre isso com a opção -v .

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

também pode ser baseado em se incluir um PADRÃO com ~ .

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

Ou também grep pode ser usado também.

grep '^PATTERN.*[^:]'
    
por 21.08.2017 / 15:50
0

Se os dados de entrada fossem JSON (parece suspeito), pode-se usar jq :

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

Isso pode ter que ser modificado se houver algum tipo de estrutura de dados complicada, obviamente.

    
por 21.08.2017 / 18:00