¿Cómo buscar alfabetos seguidos de un espacio y un signo de puntuación?

¿Cómo buscar alfabetos seguidos de un espacio y un signo de puntuación?

tengo una linea llamada

10909101 - testingName - Log8767, File787 - 8:50PM  

Ahora solo quiero usar grep testingNamecomo resultado.

El primer número puede variar en términos de número de dígitos (otra línea puede tenerse 12a sí misma como primer número), por lo que no puedo usar ningún grep basado en números. Entonces, ¿cómo soluciono esto?

Respuesta1

Dado que todos los datos tendrán el mismo formato, grepno es la herramienta adecuada para ello. Es utilizable, sin duda, pero usarlo es una chapuza: no grepfue diseñado para esto y es una herramienta mucho mejor awk.

Dado que su delimitador siempre será una secuencia de "espacio, guión, espacio", es decir -, puede hacer esto:

$ awk -F' - ' '{print $2}' <filename>

¿Dónde <filename>está el nombre del archivo con los datos que está buscando y obtendrá todas las líneas del archivo completo recortadas solo a la segunda entrada? Si no te gusta usar un delimitador de tres caracteres, puedes hacer esto:

$ awk -F- '{print $2}' | tr -d ' '

que simplemente toma todo, desde el primero -hasta el segundo, incluidos los espacios, y los elimina mediante tr. Por supuesto, si tiene espacios en los nombres de sus archivos, eso causaría problemas y querrá seguir con el primer ejemplo.

Respuesta2

Esto usadoscasos de grep, peroespuro grep:

echo '10909101 - testingName - Log8767, File787 - 8:50PM  ' | \
grep -o '\- [[:alpha:]]* \-' | grep -o '[[:alpha:]]*'

Producción:

testingName

información relacionada