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