단어와 해당 단어 뒤의 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}하이픈이 아닌 문자(비어 있을 수 있음) 뒤에 하이픈 문자가 두 번 나오는 일련의 일치 항목을 찾습니다.

관련 정보