Tengo un archivo donde quiero extraer todas las coincidencias.
- Cada coincidencia comienza con una palabra y termina con la enésima vez que aparece un carácter después de cada coincidencia, en este caso la segunda.
- Incluya en el resultado la palabra y el enésimo carácter coincidente.
- Genera una coincidencia por línea.
- Puede haber cualquier número de coincidencias en cualquier línea.
- Cada coincidencia está en la misma línea: lo que significa que una coincidencia no se divide entre dos líneas con CR, LF, CRLF.
Ejemplo: extraiga todas las coincidencias entre 'usuario' y la segunda coincidencia de '-' después de cada 'usuario':
Fichero de entrada:
sample text user=data-no value /) xx- fdfd\n
abcd
abcd user-- example$% user-%&?@:-useruser**-#<>\"-user0-
gg-
--
useruser------data
user-user------data
Archivo de salida que prioriza la coincidencia inicial (palabra) y luego busca hacia adelante:
user=data-no value /) xx-
user--
user-%&?@:-
useruser**-#<>\"-
useruser--
user-user-
Archivo de salida que prioriza la enésima coincidencia final (palabra) y se lee al revés:
user=data-no value /) xx-
user--
user-%&?@:-
user**-#<>\"-
user--
user-user-
Respuesta1
No entiendo qué significa "priorizar" en este contexto, pero podrías usar un grep simple:
$ grep -Eo 'user([^-]*-){2}' file
user=data-no value /) xx-
user--
user-%&?@:-
useruser**-#<>\"-
useruser--
user-user-
([^-]*-){2}
coincide con una secuencia (posiblemente vacía) de caracteres sin guión seguidos de un carácter con guión, dos veces.