Extraiga todas las coincidencias entre una palabra y la enésima coincidencia de caracteres después de esa palabra

Extraiga todas las coincidencias entre una palabra y la enésima coincidencia de caracteres después de esa palabra

Tengo un archivo donde quiero extraer todas las coincidencias.

  1. 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.
  2. Incluya en el resultado la palabra y el enésimo carácter coincidente.
  3. Genera una coincidencia por línea.
  4. Puede haber cualquier número de coincidencias en cualquier línea.
  5. 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.

información relacionada