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 grep
Respuestas:
Puede usar
grep -E
para 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,}' testfile
Puede 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-o
marca para imprimir solo "palabras" coincidentesfuente
grep -o
imprimirá 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.txt
en su carpeta actual se sobrescribirá, estamos accediendoinput.txt
desde su carpeta Pública.Remoto
En este ejemplo
output.txt
en su carpeta actual se sobrescribirá, estamos accediendoinput.txt
desdehttps://yoursite.com/Public/
.fuente
curl
cuando un simplecat
lo haría?