단어와 해당 단어 뒤의 n번째 문자 일치 사이의 모든 일치 항목을 추출합니다.

단어와 해당 단어 뒤의 n번째 문자 일치 사이의 모든 일치 항목을 추출합니다.

모든 일치 항목을 추출하려는 파일이 있습니다.

  1. 각 일치는 단어로 시작하고 각 일치 후 문자가 n번째 나타나는 경우(이 경우 2번째)로 끝납니다.
  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}하이픈이 아닌 문자와 하이픈 문자가 두 번 나오는 (비어 있을 수도 있는) 시퀀스와 일치합니다.

관련 정보