Vejo muitos exemplos e páginas de manual sobre como fazer coisas como pesquisar e substituir usando sed, awk ou gawk.
Mas, no meu caso, tenho uma expressão regular que desejo executar em um arquivo de texto para extrair um valor específico. Não quero pesquisar e substituir. Isso está sendo chamado de bash. Vamos usar um exemplo:
Expressão regular de exemplo:
.*abc([0-9]+)xyz.*
Arquivo de entrada de exemplo:
a
b
c
abc12345xyz
a
b
c
Por mais simples que pareça, não consigo descobrir como chamar o sed / awk / gawk corretamente. O que eu esperava fazer é de dentro do meu script bash:
myvalue=$( sed <...something...> input.txt )
As coisas que experimentei incluem:
sed -e 's/.*([0-9]).*/\\1/g' example.txt # extracts the entire input file
sed -n 's/.*([0-9]).*/\\1/g' example.txt # extracts nothing