Obtém o número após a palavra-chave em string

0

Eu tenho uma string em um arquivo com o formato

opt1= abc  opt2= 3 opt3= 10 opt4= 0

Agora quero ler o número após o opt3 , por exemplo.

Primeiramente começo com grepping para a linha

grep opt3 file |

e canalize-o para o próximo comando. Mas agora eu realmente não sei como proceder, minhas habilidades de shell são bastante rudimentares ...

    
por Fl.pf. 06.06.2017 / 11:10

3 respostas

2

Com regexes compatíveis com grep e Perl (PCRE):

grep -Po 'opt3=\s*\K\d+'
  • A opção -o faz com que grep imprima apenas texto correspondente
  • \K em PCRE indica que a correspondência realmente começa a partir daqui: a expressão anterior deve ser testada, mas não incluída no texto correspondente
  • opt3=\s* é opt3 seguido por espaços, que não estão incluídos no texto correspondente, portanto, apenas o número após é impresso.
por muru 06.06.2017 / 11:14
1

Eu usaria o comando cut para fazer o mesmo:

cut -d' ' -f7 file 

Informação:

-d : delimiter (o que separa os campos)

-f7 : imprima o sétimo campo

    
por George Udosen 06.06.2017 / 11:30
0

Acho que o que você está procurando é

grep -Po "(?<=opt3=\s)[0-9]+" file
  • (?<=opt3=\s) : estamos procurando por "opt3=" no entanto, não vamos incluí-lo.
  • 0-9]+ o número depois de "opt3="
  • -o mostra apenas a correspondência
por Ravexina 06.06.2017 / 11:13