Primeiro, um aviso obrigatório. Geralmente é uma idéia muito ruim para tentar analisar HTML com ferramentas simples como expressões regulares. Dito isto, neste caso, se você tem certeza de que o que você quer sempre será a segunda palavra em uma linha que começa com Hello
, você pode usar um dos seguintes:
-
GNU
grep
grep -oP '^Hello\s+\K\S+'
Isso é
grep
com expressões regulares compatíveis com Perl (-P
) e-o
para informar que apenas imprime a parte correspondente da linha. A regex em si procuraHello
, depois um ou mais caracteres de espaço em branco (\s+
) e, em seguida, descarta-o (\K
) e, em seguida, 1 ou mais caracteres não brancos (\S+
). -
awk
awk '$1=="Hello"{print $2}' file
awk
dividirá automaticamente suas linhas de entrada no espaço em branco e o primeiro campo será$1
, o segundo$2
etc. Portanto, esse script imprimirá o segundo campo se o primeiro forHello
. Observe que não corresponderá aHelooo
. Se você quiser que todas as linhas cujos primeiros caracteres sejamHello
e não necessariamente somente aquelas cuja primeira palavra seja exatamenteHello
, use isso:awk '/^Hello/{print $2}' file
Com ambas as abordagens, para salvar a saída em uma variável, use substituição de comando :
myvariable=$(grep -oP '^Hello\s+\K\S+')
myvariable=$(awk '/^Hello/{print $2}' file)