Veo muchos ejemplos y páginas man sobre cómo hacer cosas como buscar y reemplazar usando sed, awk o gawk.cómo usar sed, awk o gawk para imprimir solo lo que coincide?
Pero en mi caso, tengo una expresión regular que quiero ejecutar contra un archivo de texto para extraer un valor específico. No quiero buscar y reemplazar. Esto se llama desde bash. Usemos un ejemplo:
Ejemplo de expresiones regulares:
.*abc([0-9]+)xyz.*
Ejemplo de archivo de entrada:
a
b
c
abc12345xyz
a
b
c
Tan simple como suena, no puedo encontrar la manera de llamar sed/awk/gawk correctamente . Lo que estaba esperando a hacer, es de dentro de mi escritura del golpe tienen:
myvalue=$(sed <...something...> input.txt)
cosas que he intentado incluyen:
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
Wow ... la gente votó esta pregunta abajo -1? ¿Es realmente tan inapropiado de una pregunta? –
Parece perfectamente apropiado, usar Regex y potentes utilidades de línea de comandos como sed/awk o cualquier editor como vi, emacs o teco puede ser más como programar que simplemente usar alguna aplicación antigua. IMO esto pertenece a SO más que SU. – Dereleased
Quizás fue rechazado porque en su forma inicial no definió claramente algunos de sus requisitos. Todavía no lo hace, a menos que lea los comentarios del OP a las respuestas (incluida la que eliminé cuando las cosas se pusieron en forma de pera). – pavium