Извлечь все совпадения между словом и n-ным совпадением символа после этого слова

Извлечь все совпадения между словом и n-ным совпадением символа после этого слова

У меня есть файл, из которого я хочу извлечь все совпадения.

  1. Каждое совпадение начинается со слова и заканчивается n-ным появлением символа после каждого совпадения, в данном случае вторым.
  2. Включить в вывод слово и n-ный совпадающий символ.
  3. Выводить по одному совпадению в каждой строке.
  4. В любой строке может быть любое количество совпадений.
  5. Каждое совпадение находится в одной строке: это означает, что совпадение не разделено между двумя строками с CR, LF, CRLF.

Пример: извлечь все совпадения между «user» и вторым совпадением «-» после каждого «user»:

Входной файл:

sample text user=data-no value /) xx- fdfd\n
abcd

abcd user-- example$% user-%&?@:-useruser**-#<>\"-user0-
gg-
--
useruser------data
user-user------data

Выходной файл с приоритетом начального совпадения (слова) и последующим поиском вперед:

user=data-no value /) xx-
user--
user-%&?@:-
useruser**-#<>\"-
useruser--
user-user-

Выходной файл с приоритетом на конечное n-ное совпадение (слово) и чтением в обратном порядке:

user=data-no value /) xx-
user--
user-%&?@:-
user**-#<>\"-
user--
user-user-

решение1

Я не понимаю, что означает «приоритизация» в данном контексте, но вы можете использовать простую команду grep:

$ grep -Eo 'user([^-]*-){2}' file
user=data-no value /) xx-
user--
user-%&?@:-
useruser**-#<>\"-
useruser--
user-user-

([^-]*-){2}соответствует (возможно пустой) последовательности символов, не являющихся дефисом, за которой дважды следует символ дефиса.

Связанный контент