모든 일치 항목을 추출하려는 파일이 있습니다.
- 각 일치는 단어로 시작하고 각 일치 후 n번째 문자 발생(이 경우 두 번째)으로 끝납니다.
- 출력에 단어와 일치하는 n번째 문자를 포함합니다.
- 한 줄에 하나의 일치 항목을 출력합니다.
- 한 줄에는 일치하는 항목이 얼마든지 있을 수 있습니다.
- 각 일치 항목은 동일한 줄에 있습니다. 이는 일치 항목이 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}
하이픈이 아닌 문자(비어 있을 수 있음) 뒤에 하이픈 문자가 두 번 나오는 일련의 일치 항목을 찾습니다.