Tengo un archivo como este:
other lines . . .
blah blah blah (:34)
Deseo encontrar la aparición de números en el archivo anterior. Se me ocurrio:
grep [0-9] filename
Pero eso es imprimir todo:
blah blah blah (:34)
Más bien solo quiero 34. ¿Hay alguna manera de hacerlo?
command-line
bash
text-processing
grep
Hormiga
fuente
fuente

man grepRespuestas:
Puede usar
grep -Epara acceder a la sintaxis de expresión regular extendida (igual que egrep )He creado un archivo de prueba con los siguientes contenidos:
Ahora para grep solo los números del texto que puede usar
Se dará salida.
Aquí "-o" se usa para generar solo el segmento correspondiente de la línea, en lugar del contenido completo de la línea.
Los corchetes (p. Ej., {Y}) indican el número de instancias del partido. {1,4} requiere que el carácter o la clase de carácter anterior debe aparecer al menos una vez, pero no más de cuatro veces.
Espero que esto ayude
fuente
grep -Eo '[0-9]{1,}' testfilePuede usar la expresión de paréntesis RE
[:digit:]especificada en la sección 9.3.5 del estándar POSIX , en combinación con la-omarca para imprimir solo "palabras" coincidentesfuente
grep -oimprimirá solo la parte correspondiente de la línea. De lo contrario, grep imprimirá cualquier línea con el patrón.fuente
Usaría curl para acceder a su archivo de forma local o remota, luego buscaría líneas con números envueltos en (:) y luego cortaría esas piezas y escribiría en el archivo
la respuesta aceptada ignora que podría haber números en las líneas anteriores del archivo, funciona para los datos de ejemplo, pero ¿y si el archivo fuera remoto?
Local
En este ejemplo,
output.txten su carpeta actual se sobrescribirá, estamos accediendoinput.txtdesde su carpeta Pública.Remoto
En este ejemplo
output.txten su carpeta actual se sobrescribirá, estamos accediendoinput.txtdesdehttps://yoursite.com/Public/.fuente
curlcuando un simplecatlo haría?