Como se detalla here, que desea una cláusula de búsqueda hacia atrás positivas, tales como:
grep -P '(?<=name=)[ A-Za-z0-9]*' filename
El -P hace grep utilizar el dialecto Perl, de lo contrario lo que probablemente necesita para escapar el paréntesis También puede, como se indica en otra parte, agregar el parámetro -o
para imprimir solo lo que coincide. La parte entre paréntesis especifica que desea caracteres alfanuméricos y espacios.
La ventaja de utilizar una cláusula lookbehind positiva es que el texto "name =" no es parte de la coincidencia. Si grep resalta el texto coincidente, solo resaltará la parte alfanumérica (y espacios). El parámetro -o tampoco mostrará la parte "name =". Y, si transfiere esto a otro programa como sed que podría capturar el texto y hacer algo con él, no capturará la parte "name =", aunque también puede hacerlo mediante el uso de paréntesis de captura.
¿grep realmente es compatible con lookbehind positivo? –
Estaba preocupado por eso, también, así que lo probé en mi PC con Windows, y es por eso que tuve que usar el parámetro -P. Probablemente lo apoye en los otros sabores (tal vez no -G), pero yo no sabía el escape adecuado para los elementos. Estoy usando grep 2.5.1. – markets
Lo consigo con grep -P: grep: El soporte para la opción -P no está compilado en este Esto está en Ubuntu Hardy (Linux 2.6.24). En otra máquina Linux falló con un mensaje de error ligeramente diferente, y también en Solaris 10. –